通过如下代码就可以简单实现select带模糊查询的条件查询,具体如下jquery.select.js如下:


  (function($) {
    $.selectSuggest = function(target, data, itemSelectFunction) {
    var defaulOption = {
      suggestMaxHeight: '200px',//弹出框最大高度
      itemColor : '#000000',//默认字体颜色
      itemBackgroundColor:'RGB(199,237,204)',//默认背景颜色
      itemOverColor : '#ffffff',//选中字体颜色
      itemOverBackgroundColor : '#C9302C',//选中背景颜色
      itemPadding : 3 ,//item间距
      fontSize : 12 ,//默认字体大小
      alwaysShowALL : true //点击input是否展示所有可选项
      };
      var maxFontNumber = 0;//最大字数
      var currentItem;
      var suggestContainerId = target + "-suggest";
      var suggestContainerWidth = $('#' + target).innerWidth();
      var suggestContainerLeft = $('#' + target).offset().left;
      var suggestContainerTop = $('#' + target).offset().top + $('#' + target).outerHeight();
      var showClickTextFunction = function() {
        $('#' + target).val(this.innerText);
        currentItem = null;
        $('#' + suggestContainerId).hide();
      }
      var suggestContainer;
      if ($('#' + suggestContainerId)[0]) {
        suggestContainer = $('#' + suggestContainerId);
        suggestContainer.empty();
      } else {
        suggestContainer = $('<div></div>'); //创建一个子<div>
      }
      suggestContainer.attr('id', suggestContainerId);
      suggestContainer.attr('tabindex', '0');
      suggestContainer.hide();
      var _initItems = function(items) {
        suggestContainer.empty();
          var itemHight=0;
        for (var i = 0; i < items.length; i++) {
            if(items[i].text.length > maxFontNumber){
              maxFontNumber = items[i].text.length;
              }
          var suggestItem = $('<div></div>'); //创建一个子<div>
          suggestItem.attr('id', items[i].id);
          suggestItem.append(items[i].text);
          suggestItem.css({
              'padding':defaulOption.itemPadding + 'px',
            'white-space':'nowrap',
            'cursor': 'pointer',
            'background-color': defaulOption.itemBackgroundColor,
            'color': defaulOption.itemColor
          });
          suggestItem.bind("mouseover",
          function() {
            $(this).css({
              'background-color': defaulOption.itemOverBackgroundColor,
              'color': defaulOption.itemOverColor
            });
            currentItem = $(this);
          });
          suggestItem.bind("mouseout",
          function() {
            $(this).css({
              'background-color': defaulOption.itemBackgroundColor,
              'color': defaulOption.itemColor
            });
            currentItem = null;
          });
          suggestItem.bind("click", showClickTextFunction);
          suggestItem.bind("click", itemSelectFunction);
          suggestItem.appendTo(suggestContainer);
          suggestContainer.appendTo(document.body);
        }
      }
      var inputChange = function() {
        var inputValue = $('#' + target).val();
        inputValue = inputValue.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
        var matcher = new RegExp(inputValue, "i");
        return $.grep(data,
        function(value) {
          return matcher.test(value.text);
        });
      }
      $('#' + target).bind("keyup",
      function() {
        _initItems(inputChange());
      });
      $('#' + target).bind("blur",
      function() {
          if(!$('#' + suggestContainerId).is(":focus")){
            $('#' + suggestContainerId).hide();
            if (currentItem) {
          currentItem.trigger("click");
          }
          currentItem = null;
            return;
            }
      });
      $('#' + target).bind("click",
      function() {
        if (defaulOption.alwaysShowALL) {
          _initItems(data);
        } else {
          _initItems(inputChange());
        }
        $('#' + suggestContainerId).removeAttr("style");
        var tempWidth = defaulOption.fontSize*maxFontNumber + 2 * defaulOption.itemPadding + 30;
        var containerWidth = Math.max(tempWidth, suggestContainerWidth);
        var h = this.scrollHeight;
        $('#' + suggestContainerId).css({
          'border': '1px solid #ccc',
          'max-height': '100px',
          'top': suggestContainerTop,
          'left': suggestContainerLeft,
          'width': containerWidth,
          'position': 'absolute',
          'font-size': defaulOption.fontSize+'px',
          'font-family':'Arial',
          'z-index': 99999,
          'background-color': '#FFFFFF',
          'overflow-y': 'auto',
          'overflow-x': 'hidden',
          'white-space':'nowrap'
        });
        $('#' + suggestContainerId).show();
      });
      _initItems(data);
      $('#' + suggestContainerId).bind("blur",
      function() {
        $('#' + suggestContainerId).hide();
      });
    }
  })(jQuery);

html如下:


    <!DOCTYPE html>
    <html lang="zh_cn">
      <head>
        <title>select.suggest</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <!-- Bootstrap -->
        <script src="js/jquery-1.10.2.js"></script>
        <script src="js/jquery.select.js"></script>
      </head>
      <body>
        <h1>Hello, world!</h1>
        <div>
          <div>
            <div>.col-md-1
            </div>
            <div style="">
              <input id="testInput" type="text" />
            </div>
          </div>
        </div>
        <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
        <!-- Include all compiled plugins (below), or include individual files as needed -->
      </body>
      <script type="text/javascript">
        var datas =[{"id":"2","text":"中国石油"},
        {"id":"4","text":"中国建筑"},
        {"id":"3","text":"中国移动"},
        {"id":"5","text":"中国工商银行"},
        {"id":"7","text":"中国铁建"},
        {"id":"8","text":"上海汽车集团"},
        {"id":"9","text":"中国建设银行"},
        {"id":"10","text":"联想集团"}];
        var itemSelectFuntion = function(){
          alert(this.id + "," + this.innerHTML);
        };
        $.selectSuggest('testInput',datas,itemSelectFuntion);
      </script>
    </html>

jQuery 实现 select模糊查询 反射机制相关推荐

  1. jQuery实现id模糊查询

    在js中常常会用到某类似id的模糊查询,可以使用jquery工具和模糊查询"^",来实现.下面用另个例子说明 eg_1. 在页面中查找某id图片集合,先放到代码: <div ...

  2. 使用jQuery实现实时模糊查询功能

    先说一下模糊查询 在方法上写的SQL是跟数据库里边的不一样,这里果断入坑了. 来个MySQL例子: 模糊查询user中的name: select * from user where name like ...

  3. jquery三级联动模糊查询_js相关:jQuery实现三级联动效果

    js相关:jQuery实现三级联动效果 发布于 2020-7-21| 复制链接 摘记: 很久没写了,顺带复习,写了一个jQuery实现的三级联动,供大家参考,具体内容如下 ```xhtml .. 很久 ...

  4. jquery三级联动模糊查询_jquery三级联动

    三级联动 --请选择-- --请选择-- --请选择-- $(function(){functioninitCity(){ $("#city").html('--请选择--'); ...

  5. jquery ajax动态模糊查询插件

    html代码如下: <div id="select_model"><div style="width: 150px;line-height: 24px& ...

  6. C语言的模糊查询,【C语言如何实现中文模糊查询+急+】

    C语言如何实现中文模糊查询? (急) 2009年02月25 - 我要建立一个生物信息检索系统,如何用C语言实现数据的模糊查询,数据包括中文和英文,请高手指点(最好附上例子或源程序),谢谢! 怎样用c语 ...

  7. mysql模糊查询的优化方法--亲自实践

    数据有4W多条,不多,但是模糊查询 起来特别慢. 1,尝试过用 select * from (select * from a union all select * from b...很多表union) ...

  8. mybatis学习之路----模糊查询实现

    点滴记载,点滴进步,愿自己更上一层楼. 废话不多说,进入主题. 项目还是在上篇  mybatis学习之路----非代理方式的增删改查用法 基础之上进行开发 一个简单的模糊查询sql. SELECT * ...

  9. easyui select选择框模糊查询 以及页面引入多个版本的jquery解决办法

    eaeyui版本1.4.4,下载地址 http://www.jeasyui.com/download/index.php 下拉框模糊查询例子: <%@ page language="j ...

最新文章

  1. Datawhale第五期组队学习团队成员
  2. boost::rational模块相关的测试程序
  3. 12-基于selenium实现12306模拟登录,及京东登录滑动缺口验证模拟登录
  4. html怎么查看两个块的距离,两个东西之间的距离怎么控制
  5. 使用Maven进行硒测试自动化
  6. C#LeetCode刷题-数学
  7. spring c3p0 mysql_spring boot整合mybatis使用c3p0数据源连接mysql
  8. DLL系列6.函数转发器
  9. SQL service 数据库 某工厂的物料管理系统数据库设计与实现
  10. 证书错误 导航已阻止 无法跳转 最终解决
  11. 2021高考北京大峪中学成绩查询,2014年北京市各区高考成绩汇总
  12. 【JS】Number to digit tiers
  13. rabbitMQ修改默认端口
  14. 固定IP地址及其重启后地址更改的解决方法
  15. Distiller 安装时环境配置的一些可选项
  16. 游戏开发中的数学和物理算法10-18
  17. 儒家思想的核心:仁、义、礼、智、信、忠、孝、悌、节、恕、勇、让
  18. 在使用123作为rand matlab,西安电子科技大学MATLAB考试试卷
  19. simplex法(单纯形) 并在python实现简单的应用
  20. IOS APP 上了APPStore以后怎么修改搜索关键字

热门文章

  1. 使.NET使用数据库连接池 .
  2. Apache的性能优化
  3. 一文读懂比特币现金(BCH)
  4. 比特币现金驱动的社交媒体平台备忘录继续蓬勃发展
  5. 比特币前核心开发者Mike Hearn三年前的预测一一应验
  6. lvm自动扩容到固定分区脚本
  7. JavaScript有关的10个怪癖和秘密(转)
  8. linux 进程优先级 之设置实时进程 (另一种方式是设置nice值)【转】
  9. Windows 7怎么关闭自动播放功能?
  10. Cnyunwei-Cacti+Nagios安装说明