在使用combobox做自动补全时,当下拉框数据量大的时候会导致效率大大降低,那么此时我们可以限定每次提示的数据量以提升效率,实现方式如下:
找到以下位置的源码,添加注释为//add的位置的行即可
$.map(qq,function(q){
q=$.trim(q);
var _978=q;
var _979=undefined;
var dataSize=0;//add
for(var i=0;i<data.length;i++){
var row=data[i];
if(opts.filter.call(_974,q,row)){//此处会调用filter过滤
dataSize++;//add
var v=row[opts.valueField];
var s=row[opts.textField];
var g=row[opts.groupField];
var item=opts.finder.getEl(_974,v).show();
if(s.toLowerCase()==q.toLowerCase()){//如果不需要大小写匹配可将toLowerCase()删除可提升效率
_978=v;
item.addClass("combobox-item-selected");
}
if(opts.groupField&&_979!=g){
$("#"+_975.groupIdPrefix+"_"+$.inArray(g,_975.groups)).show();
_979=g;
}
}
if(opts.showDataSize!=undefined&&opts.showDataSize==dataSize){//add
break;//add
}//add
}
vv.push(_978);
});
然后在combobox的data-options中添加
showDataSize:20
即可实现仅提示20行数据
如何实现本地数据过滤请参考: