1. 要使combotree實現(xiàn)查詢功能,只能通過擴展代碼,在EasyUI庫或者本地js文件中加入以下代碼:
//自定義
可編輯 模糊查詢
(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
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[i].target).show();
}
onShowPanel.call(this);
};
$(this).combo('options').onShowPanel = opts.onShowPanel;
}
}
});
})(jQuery);
2. ?解決Firefox 無法使用問題
使用中發(fā)現(xiàn)一個奇怪的問題,easyui的combobox在IE下面輸入中文,可以自動實現(xiàn)篩選和檢索的功能,但是在firefox下面不可以。 于是查了一些資料,發(fā)現(xiàn)原來是瀏覽器對于中文輸入法的處理問題,對于chrome和IE他們會響應(yīng)輸入法最后輸入中文時的keydown事件,也就是說如果你輸入"調(diào)"這個字,如果用的拼音輸入法,你按下diao四個字符的時候,IE不會處理keydown事件,只有當"調(diào)"這個字進入到輸入框中的時候,才會觸發(fā)keydown從而觸發(fā)combobox的檢索。 而Firefox會響應(yīng)每一個字符的keydown事件,也就是按下d i? a o四個鍵的時候各觸發(fā)一次keydown事件,而選擇中文字符的時刻,卻只觸發(fā)keyup事件,而不觸發(fā)keydown事件。 而combobox的過濾事件恰恰只綁定了keydown所以導(dǎo)致了在firefox中中文輸入無法檢索的問題。
解決方法如下: 在easyui 1.4版本的jQuery.easyui.min.js?中搜索如下代碼:
$.fn.combo.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:{click:_8a2,keydown:_8a6,paste:_8a6,drop:_8a6},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){
},down:function(e){
},left:function(e){
},right:function(e){
},enter:function(e){
},query:function(q,e){
}},onShowPanel:function(){
},onHidePanel:function(){
},onChange:function(_8d6,_8d7){
}});
})(jQuery);
將其中的keydown改為keyup修改后為keyup:_8a6即可解決問題。
如果不適用mini版的話,可以修改plugin下面的jquery.combo.js修改的部分和上面一致。