最近,项目中有个需求就是系统中的所有的单选下拉框由于加载的数据比较多,所以产品设计提议要将所有的下拉框改造成可以实现模糊匹配的形式。之前使用过easyui的combox插件,但是它只支持从第一个字母开始匹配,所以这个还是不能满足需求,所以就有了一种改造源码的想法。
其实,经过调试代码发现还是不算太难,下面就将源码修改部分贴出来
首先要修改模糊查询后的结果处理方法--jquery.combobox.js 中的doQuery()方法
修改前的源码
function doQuery(target, q){
var state = $.data(target, 'combobox');
var opts = state.options;
if (opts.multiple && !q){
setValues(target, [], true);
} else {
setValues(target, [q], true);
}
if (opts.mode == 'remote'){
request(target, null, {q:q}, true);
} else {
var panel = $(target).combo('panel');
panel.find('div.combobox-item-selected,div.combobox-item-hover').removeClass('combobox-item-selected combobox-item-hover');
panel.find('div.combobox-item,div.combobox-group').hide();
var data = state.data;
var vv = [];
var qq = opts.multiple ? q.split(opts.separator) : [q];
$.map(qq, function(q){
q = $.trim(q);
var group = undefined