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){

 

posted on 2016-08-24 14:50  boke_wang  阅读(459)  评论(0)    收藏  举报

导航