easyui combobox和combotree模糊查询 (偷来的。。。)
/**
* combobox和combotree模糊查询
*/
(function(){
//combobox可编辑,自定义模糊查询
$.fn.combobox.defaults.editable = true;
$.fn.combobox.defaults.filter = function(q, row){
var opts = $(this).combobox('options');
return row[opts.textField].indexOf(q) >= 0;
};
//combotree可编辑,自定义模糊查询
$.fn.combotree.defaults.editable = true;
$.extend($.fn.combotree.defaults.keyHandler,{
up:function(){
console.log('up');
},
down:function(){
console.log('down');
},
enter:function(){
console.log('enter');
},
query:function(q){
var t = $(this).combotree('tree');
var nodes = t.tree('getChildren');
for(var i=0; i<nodes.length; i++){
var node = nodes[i];
if (node.text.indexOf(q) >= 0){
$(node.target).show();
} else {
$(node.target).hide();
}
}
var opts = $(this).combotree('options');
if (!opts.hasSetEvents){
opts.hasSetEvents = true;
var onShowPanel = opts.onShowPanel;
opts.onShowPanel = function(){
var nodes = t.tree('getChildren');
for(var i=0; i<nodes.length; i++){
$(nodes[i].target).show();
}
onShowPanel.call(this);
};
$(this).combo('options').onShowPanel = opts.onShowPanel;
}
}
});
})(jQuery);
easyui 模糊匹配解决办法 Firefox不会自动匹配
http://blog.csdn.net/zhaobao110/article/details/48294121
easyui 提供了模糊匹配的功能,很好,也很强大,但是略有不足之处,第一模糊匹配必须第一个字开始匹配, 第二就是火狐浏览器写一个字是没有触发事件
以上解决办法 需要改源码,修改一点点就ok,为了升级方便 修改之后做个标记 以 1.4.3版本为例
在 1298 行出 return row[opts.textField].toLowerCase().indexOf(q.toLowerCase())>==0;
改为:
return row[opts.textField].toLowerCase().indexOf(q.toLowerCase())>-1;
这样可以以任意字进行匹配。
在1255行处 ,将keydown:_956 改为 keyup 即可 解决火狐敲入字没触发事件的问题。
$.fn.combo.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:{click:_952,keydown:_956,paste:_956,drop:_956},panelWidth:null,panelHeight:200,panelMinWidth:null,panelMaxWidth:null,panelMinHeight:null,panelMaxHeight:null,panelAlign:"left",multiple:false,selectOnNavigation:true,separator:",",hasDownArrow:true,delay:200,keyHandler:{up:function(e){
浙公网安备 33010602011771号