autocomplete 模糊查询 改进插件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zjl199303/article/details/80622476

插件使用:

//  securInfo  接口返回data数据
$(".grxxgraduSchool").autocomplete(
                      securInfo,
                      {
                             minChars : 0,// 自动完成激活之前填入的最小字符
                             max : 12,    // 列表条目数
                             width : 577,  // 提示的宽度
                             scrollHeight : 300,// 提示的高度
                             matchContains : true,// 是否只要包含文本框里的就可以
                             autoFill : false,// 自动填充
                             formatItem : function(data, i, max) {// 格式化列表中的条目
                                                                                                     // row:条目对象,i:当前条目数,max:总条目数 val='"+data.ID+"'
                                    return '<div>' + data.ChnTitle
                                                  + '</div>';
                             },
                             formatMatch : function(data, i, max) {// 配合formatItem使用,作用在于,由于使用了formatItem,所以条目中的内容有所改变,而我们要匹配的是原始的数据,所以用formatMatch做一个调整,使之匹配原始数据
                                    return data.ID + data.ChnTitle;
                             },
                             formatResult : function(data) {// 定义最终返回的数据,比如我们还是要返回原始数据,而不是formatItem过的数据
                                    return data.ChnTitle;
                             }
                      }).result(function(event, data, formatted) {
                      // alert(data.SecuAbbr);          // 返回所选下拉框的值  问题:会返回多次
              });
1.第一次点击(获得焦点时不触发检索):

autocomplete.js:165行

.click(function() {
      // show select when clicking in a focused field
      if ( hasFocus++ > 1 && !select.visible() ) {
           onChange(0, true);

      }
})


改成:
.click(function() {
      // show select when clicking in a focused field
      if ( ++hasFocus >= 1 && !select.visible() ) {
           onChange(0, true);

      }

})
2.IE第一个汉字不能进行检索:
autocomplete.js:199行  新增
.bind("input", function() {
       onChange(0, true);
})
3.IE第一次点击(获取焦点)时  再次不能进行检索:
    js 添加事件  页面一加载就执行autocomplete

// 新增代码
var orgList= JSON.parse(localStorage.getItem('orgList')), securInfo;
base_ajaxPost("../../org/getAllOrg",null, function (result) {
       localStorage.setItem('orgList', JSON.stringify(result.data.org));
       securInfo = result.data.org;
       getOrgan(securInfo);
},1)

// 新增代码


$('#select_org').focus(function(){
       getOrgan(securInfo);
});
4.支持多选
  设置属性即可:
multiple: false ,         // 是否允许输入多个值. Default: false

 问题:插件在谷歌测试没有问题,ie一直报错。794行: document . selection .createRange()
 ie不支持这个方法。换成 : document.getSelection()  虽然不报错
但是: 插件多选的时候始终会把新选的值替换掉第一个值。并不能实现模糊查询多选
问题未解决。






猜你喜欢

转载自blog.csdn.net/zjl199303/article/details/80622476
今日推荐