1. 要使combotree實(shí)現(xiàn)查詢功能,只能通過擴(kuò)展代碼函似,在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)一個(gè)奇怪的問題撇寞,easyui的combobox在IE下面輸入中文顿天,可以自動(dòng)實(shí)現(xiàn)篩選和檢索的功能,但是在firefox下面不可以蔑担。 于是查了一些資料牌废,發(fā)現(xiàn)原來是瀏覽器對(duì)于中文輸入法的處理問題,對(duì)于chrome和IE他們會(huì)響應(yīng)輸入法最后輸入中文時(shí)的keydown事件啤握,也就是說如果你輸入"調(diào)"這個(gè)字鸟缕,如果用的拼音輸入法,你按下diao四個(gè)字符的時(shí)候,IE不會(huì)處理keydown事件懂从,只有當(dāng)"調(diào)"這個(gè)字進(jìn)入到輸入框中的時(shí)候授段,才會(huì)觸發(fā)keydown從而觸發(fā)combobox的檢索。 而Firefox會(huì)響應(yīng)每一個(gè)字符的keydown事件番甩,也就是按下d i? a o四個(gè)鍵的時(shí)候各觸發(fā)一次keydown事件侵贵,而選擇中文字符的時(shí)刻缘薛,卻只觸發(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修改的部分和上面一致檐迟。