EasyUI库已经实现了combobox的查询过滤功能,但只能从头匹配,原因是EasyUI库的代码限制:
filter: function(q, row){
var opts = $(this).combobox('options');
return row[opts.textField].indexOf(q) == 0;
}
combobox有一个filter属性,通过这个属性来实现查询效果,在EasyUI库或本地combobox控件中修改这个filter方法就可以实现自定义查询效果
$('#businessCityNo').combobox({
valueField : 'businessCityNo',
textField : 'businessCityName',
editable:true ,
required: true,
filter: function(q, row){
var opts = $(this).combobox('options');
return row[opts.textField].indexOf(q) >= 0;//这里改成>=即可在任意地方匹配
},
data : d.rows,
});
当然,直接在生成combobox的地方来添加filter,有多少个就得添加多少次,很麻烦,简单一点,在本地js文件中覆盖这个filter:
$.fn.combobox.defaults.filter = function(q, row){
var opts = $(this).combobox('options');
return row[opts.textField].indexOf(q) >= 0;
}
combobox可以通过重写filter方法来实现自定义匹配方式,是因为EasyUI库有对filter属性的底层支持,EasyUI的官方文档中明确提到combobox的属性列表,其中就有filter:
The properties extend from combo, below is the added properties for combobox.