插件使用:
// 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 '' + data.ChnTitle+ '
';},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 fieldif ( hasFocus++ > 1 && !select.visible() ) {onChange(0, true);}
})改成:
.click(function() {// show select when clicking in a focused fieldif ( ++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() 虽然不报错
但是: 插件多选的时候始终会把新选的值替换掉第一个值。并不能实现模糊查询多选
问题未解决。