`

jquery实现键盘上下键、return键选折li

阅读更多
注释:code来源javaeye

使用前要引入jquery库和jquery.hotkeys.js ui

HTML CODE
<div class="searchform">
<form action="" method="post" onsubmit="return false;">
	<input type="text" name="top_search" class="text global_search" /> 
	<input type="button" value="" class="subform" /><!--<input type="button" value="" class="subform2" />--></form>
	<ul id="search_list">
		<li><a href="#" title="Private Equity Firms">Private Equity Firms</a></li>
	    <li><a href="#" title="Porfolio Companies">Porfolio Companies</a></li>
		<li><a href="#" title="Professionals">Professionals</a></li>
		<li><a href="#" title="Lenders">Lenders</a></li>

	</ul>
	<input type="hidden" name="prevTrIndex" id="prevTrIndex" value="-1" />
</div>


js code
<script type="text/javascript">
//<![CDATA[
/**
 * @about search part js packaging for pe website 3.28
 * @Copyright 2011, WANGXIANG
 * @MAILTO: flyxiang228@gmail.com
 */
(function ($) {
  $.fn.gobalSearch = function (options) {
    var defaults = {
      contanier: '',
      //drop menu contentsearch_list
      prevTrIndex: '',
      //mark prevTrIndex
      items: ['Private Equity Firms', 'Portfolio Companies', 'Professionals', 'Lenders'] //['Private Equity Firms','Portfolio Companies','Professionals','Lenders']
    };
    var options = $.extend(defaults, options);
    this.each(function () {
      var globalSearch = $(this);
      var searchbtn = globalSearch.next();
      var nextele = globalSearch.parent().next();
      var drop_li = nextele.children();
      var prevEle = $("#" + options.prevTrIndex);
      //js方法判断当前搜索框触发return按键
      /*globalSearch.keydown(function(event){
        var evt=event ? event : (window.event ? window.event:null);//兼容IE和FF
        if (evt.keyCode==13){ 
          nextele.show();
          globalSearch.blur();
          mainDrop();
        }
      });*/
      //jquery借助jquery.hotkey.js插件获取键盘return按键的事件
      globalSearch.bind('keydown', 'return', function (evt) {
        nextele.show();
        globalSearch.blur();
        mainDrop();
      });
      drop_li.bind('click', function () {
        var $this = $(this);
        var selectVal = $this.text();
        var searchVal = globalSearch.val();
        var relVal = $this.children('a').attr('rel');
        switch (selectVal) {
        case options.items[0]:
          window.location.href = relVal + searchVal;
          break;
        case options.items[1]:
          window.location.href = relVal + searchVal;
          break;
        case options.items[2]:
          window.location.href = relVal + searchVal;
          break;
        case options.items[3]:
          window.location.href = relVal + searchVal;
          break;
        default:
          return false;
        };
        nextele.hide();
        return false;
      });
      $(document).bind('keydown', 'up', function (evt) {
        var prevTrIndex = parseInt(prevEle.val());
        if (prevTrIndex == -1 || prevTrIndex == 0) {
          clickTr(trSize - 1);
        } else if (prevTrIndex > 0) {
          clickTr(prevTrIndex - 1);
        };
        return false;
      }).bind('keydown', 'down', function (evt) {
        var prevTrIndex = parseInt(prevEle.val());
        if (prevTrIndex == -1 || prevTrIndex == (trSize - 1)) {
          clickTr(0);
        } else if (prevTrIndex < (trSize - 1)) {
          clickTr(prevTrIndex + 1);
        };
        return false;
      }).bind('keydown', 'return', function (evt) {
        var prevTrIndex = parseInt(prevEle.val());
        var searchVal = globalSearch.val();
        var curli = $("#li_" + prevTrIndex);
        var selectVal = curli.text();
        var relVal = curli.children('a').attr('rel');
        switch (selectVal) {
        case options.items[0]:
          window.location.href = relVal + searchVal;
          break;
        case options.items[1]:
          window.location.href = relVal + searchVal;
          break;
        case options.items[2]:
          window.location.href = relVal + searchVal;
          break;
        case options.items[3]:
          window.location.href = relVal + searchVal;
          break;
        default:
          return false;
        };
        nextele.hide();
        return false;
      }).bind('click', function () {
        nextele.hide();
      });
      searchbtn.click(function () {
        if (!(nextele.css('display') == 'block')) {
          nextele.show();
          $(this).blur();
          mainDrop();
          return false;
        } else {
          nextele.hide();
          return false;
        };
      }).bind('keydown', 'return', function () {
        nextele.show();
        $(this).blur();
        mainDrop();
        return false;
      });
      //为当前选中的li选中样式


      function clickTr(currTrIndex) {
        var prevTrIndex = prevEle.val();
        if (currTrIndex > -1) {
          $("#li_" + currTrIndex).addClass("current");
        }
        $("#li_" + prevTrIndex).removeClass("current");
        prevEle.val(currTrIndex);
        $("#nuname").val(currTrIndex);
      };
      //下拉菜单添加事件集合方法

      function mainDrop() {
        drop_li.eq(0).focus();
        drop_li.removeClass('current');
        prevEle.val("-1"); //默认-1
        trSize = $("#" + options.contanier).find('li').size(); //li的数量
        drop_li.mouseover(function () { //鼠标滑过
          $(this).addClass("current");
        }).mouseout(function () { //鼠标滑出
          $(this).removeClass("current");
        }).each(function (i) { //初始化 id 和 index 属性
          $(this).attr("id", "li_" + i).attr("index", i);
        }).click(function () { //鼠标单击
          clickTr($(this).attr("index"));
        });
        clickTr(0);
        return false;
      };
    });
  };
})(jQuery);
//]]-->
</script>
分享到:
评论

相关推荐

    jQuery实现输入框回车添加标签代码.zip

    在本文中,我们将深入探讨如何使用jQuery来实现一个功能丰富的输入框,用户可以在其中通过回车键添加标签,同时支持预设标签的选择、显示和删除,并能有效防止标签的重复添加。这个功能常用于博客系统、论坛或者社交...

    jquery插件 tabs有实例

    这只是一个基础实现,实际项目中可能需要考虑更多细节,比如添加动画效果、处理键盘导航、响应式布局等。学习并理解这个实例,将有助于提升开发者在网页交互设计方面的技能,为今后的项目开发打下坚实基础。

    jquery的搜索框输入提示

    "jquery的搜索框输入提示"是一个基于jQuery实现的功能,它旨在提高用户体验,特别是在用户进行搜索时提供实时的建议或匹配结果。这个功能通常用于搜索引擎或者网站的搜索框,如百度和谷歌,当用户输入关键词时,会...

    jquery 树形菜单

    《jQuery实现树形菜单的深度解析与应用》 在网页设计和开发中,树形菜单是一种常见的用户界面元素,它能够有效地组织大量信息并提供层次化的导航体验。jQuery,作为一个轻量级、高效的JavaScript库,提供了丰富的...

    超好用的jquery 搜索提示,模仿谷歌和百度的提示功能

    本文将详细介绍如何使用jQuery实现一个模仿谷歌和百度搜索提示功能的插件,支持鼠标和键盘操作。 首先,我们要理解jQuery的基本概念。jQuery是一个快速、简洁的JavaScript库,它简化了HTML文档遍历、事件处理、动画...

    jquery autocomplete demo

    例如,使用`focus`事件实现按下回车键选择建议项,或者使用`close`事件清理未选中的建议。 ```javascript $( "#search" ).on( "autocompleteresult", function( event, ui ) { if ( !ui.item ) { // 清理未选中的...

    jQuery回车创建创建标签代码.zip

    在本文中,我们将深入探讨如何使用jQuery来实现一个功能丰富的标签管理系统,该系统支持用户通过回车键创建、初始化、编辑、删除以及禁用标签。这个功能对于网站或应用程序的用户体验提升有着显著的作用,尤其在内容...

    jquery 联动输入插件

    //绑定键盘上下左右确认事件 Prompt_Keyboard_Bind: function (opts) { opts = $.extend({ dataSource: "", //数据源 config: { nameIndex: 1, //显示的文本 shortNameIndex: 0, //显示的文本简称 idIndex: ...

    jquery鼠标右键菜单多级导航代码

    当然,实际应用中可能需要根据项目需求进行调整和优化,例如增加动画效果、实现响应式布局、添加键盘导航等。在开发过程中,理解DOM操作、事件处理和CSS定位是关键,而jQuery则提供了方便的API来简化这些任务。通过...

    jQuery左侧点击tab切换代码.rar_Tabú_jQuery左侧点击tab切换代码_realo1r_tab 切换代码

    在本文中,我们将深入探讨如何实现一个基于jQuery的左侧点击tab切换效果,这通常用于创建交互式的网页界面。"jQuery左侧点击tab切换代码"是一种常见的前端开发技术,它允许用户通过点击页面左侧的选项卡来切换不同的...

    jquery下拉搜索框显示热门关键词

    本文将详细讲解如何利用jQuery实现一个功能丰富的下拉搜索框,展示热门关键词并显示搜索次数。 首先,我们需要理解下拉搜索框的基本结构。一个基本的搜索框由HTML输入元素(`&lt;input type="text"&gt;`)和一个隐藏的...

    jquery输入框增加列表即将内容动态添加到顶部.zip

    本项目"jquery输入框增加列表即将内容动态添加到顶部.zip"显然关注的是如何利用jQuery来实现一个特定的功能:当用户在输入框中输入内容时,与输入内容匹配的列表项会自动显示,并且新添加的内容会动态地移动到列表的...

    jquery仿google自动提示

    在用户输入时,我们需要监听输入框的`keyup`事件,这样每当用户松开键盘键时,我们就能触发一个函数。使用`keyup`事件,可以这样写: ```javascript $("#searchInput").on('keyup', function() { // 在这里处理...

    jquery输入框检索

    jQuery还提供了丰富的API,如`.val()`用于获取或设置元素的值,`.keyup()`监听键盘抬起事件,`.append()`向元素添加内容等。 二、输入框事件绑定 动态检索的关键在于监听用户在输入框中的输入行为。我们可以使用`....

    jQuery仿百度搜索框下拉代码.zip

    jQuery作为一款广泛使用的JavaScript库,提供了丰富的功能和便利的操作方式,使得实现类似百度搜索框的下拉提示功能变得轻松易行。本文将深入解析如何使用jQuery来仿制百度搜索框的下拉代码。 首先,我们需要理解...

    jquery模拟字母顺序排序定位城市列表方法.zip

    这可以通过监听键盘事件来实现,当用户输入字母时,高亮显示以该字母开头的城市。下面是如何实现这个功能的代码: ```javascript $(document).on('keyup', '#search-input', function() { var searchValue = $...

    可输入选择框(类百度输入框效果)

    - **键盘导航**:允许用户使用上下箭头键浏览选项,并用回车键选定。 类百度输入框效果是网页交互设计中的一个重要组成部分,它通过结合jQuery的便利性和动态数据处理,实现了高效的用户输入辅助。通过不断优化和...

    JS+CSS实现的简单折叠展开多级菜单效果

    这个简单的实现没有依赖任何外部库,如jQuery,使得代码更轻量级,适用于对性能要求较高的项目。尽管这个例子中的菜单效果可能显得有些基础和粗糙,但它揭示了使用JS和CSS实现折叠菜单的核心原理。对于初学者或者...

    js管理类树形菜单

    5. 库与框架:有许多现成的JavaScript库和框架提供了树形菜单组件,如jQuery UI、Angular Material、Vue Element UI等。这些组件通常提供更丰富的功能和更好的性能,但也需要一定的学习成本。 6. A11y(无障碍性)...

Global site tag (gtag.js) - Google Analytics