All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.assets.rjzjh.jquery-easyui.plugins.jquery.combobox.js Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
/**
 * EasyUI for jQuery 1.9.15
 * 
 * Copyright (c) 2009-2021 www.jeasyui.com. All rights reserved.
 *
 * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
 * To use it on other terms please contact us: [email protected]
 *
 */
(function($){
function _1(_2,_3){
var _4=$.data(_2,"combobox");
return $.easyui.indexOfArray(_4.data,_4.options.valueField,_3);
};
function _5(_6,_7){
var _8=$.data(_6,"combobox").options;
var _9=$(_6).combo("panel");
var _a=_8.finder.getEl(_6,_7);
if(_a.length){
if(_a.position().top<=0){
var h=_9.scrollTop()+_a.position().top;
_9.scrollTop(h);
}else{
if(_a.position().top+_a.outerHeight()>_9.height()){
var h=_9.scrollTop()+_a.position().top+_a.outerHeight()-_9.height();
_9.scrollTop(h);
}
}
}
_9.triggerHandler("scroll");
};
function _b(_c,_d){
var _e=$.data(_c,"combobox").options;
var _f=$(_c).combobox("panel");
var _10=_f.children("div.combobox-item-hover");
if(!_10.length){
_10=_f.children("div.combobox-item-selected");
}
_10.removeClass("combobox-item-hover");
var _11="div.combobox-item:visible:not(.combobox-item-disabled):first";
var _12="div.combobox-item:visible:not(.combobox-item-disabled):last";
if(!_10.length){
_10=_f.children(_d=="next"?_11:_12);
}else{
if(_d=="next"){
_10=_10.nextAll(_11);
if(!_10.length){
_10=_f.children(_11);
}
}else{
_10=_10.prevAll(_11);
if(!_10.length){
_10=_f.children(_12);
}
}
}
if(_10.length){
_10.addClass("combobox-item-hover");
var row=_e.finder.getRow(_c,_10);
if(row){
$(_c).combobox("scrollTo",row[_e.valueField]);
if(_e.selectOnNavigation){
_13(_c,row[_e.valueField]);
}
}
}
};
function _13(_14,_15,_16){
var _17=$.data(_14,"combobox").options;
var _18=$(_14).combo("getValues");
if($.inArray(_15+"",_18)==-1){
if(_17.multiple){
_18.push(_15);
}else{
_18=[_15];
}
_19(_14,_18,_16);
}
};
function _1a(_1b,_1c){
var _1d=$.data(_1b,"combobox").options;
var _1e=$(_1b).combo("getValues");
var _1f=$.inArray(_1c+"",_1e);
if(_1f>=0){
_1e.splice(_1f,1);
_19(_1b,_1e);
}
};
function _19(_20,_21,_22){
var _23=$.data(_20,"combobox").options;
var _24=$(_20).combo("panel");
if(!$.isArray(_21)){
_21=_21.split(_23.separator);
}
if(!_23.multiple){
_21=_21.length?[_21[0]]:[""];
}
var _25=$(_20).combo("getValues");
if(_24.is(":visible")){
_24.find(".combobox-item-selected").each(function(){
var row=_23.finder.getRow(_20,$(this));
if(row){
if($.easyui.indexOfArray(_25,row[_23.valueField])==-1){
$(this).removeClass("combobox-item-selected");
}
}
});
}
$.map(_25,function(v){
if($.easyui.indexOfArray(_21,v)==-1){
var el=_23.finder.getEl(_20,v);
if(el.hasClass("combobox-item-selected")){
el.removeClass("combobox-item-selected");
_23.onUnselect.call(_20,_23.finder.getRow(_20,v));
}
}
});
var _26=null;
var vv=[],ss=[];
for(var i=0;i<_21.length;i++){
var v=_21[i];
var s=v;
var row=_23.finder.getRow(_20,v);
if(row){
s=row[_23.textField];
_26=row;
var el=_23.finder.getEl(_20,v);
if(!el.hasClass("combobox-item-selected")){
el.addClass("combobox-item-selected");
_23.onSelect.call(_20,row);
}
}else{
s=_27(v,_23.mappingRows)||v;
}
vv.push(v);
ss.push(s);
}
if(!_22){
$(_20).combo("setText",ss.join(_23.separator));
}
if(_23.showItemIcon){
var tb=$(_20).combobox("textbox");
tb.removeClass("textbox-bgicon "+_23.textboxIconCls);
if(_26&&_26.iconCls){
tb.addClass("textbox-bgicon "+_26.iconCls);
_23.textboxIconCls=_26.iconCls;
}
}
$(_20).combo("setValues",vv);
_24.triggerHandler("scroll");
function _27(_28,a){
var _29=$.easyui.getArrayItem(a,_23.valueField,_28);
return _29?_29[_23.textField]:undefined;
};
};
function _2a(_2b,_2c,_2d){
var _2e=$.data(_2b,"combobox");
var _2f=_2e.options;
_2e.data=_2f.loadFilter.call(_2b,_2c);
_2f.view.render.call(_2f.view,_2b,$(_2b).combo("panel"),_2e.data);
var vv=$(_2b).combobox("getValues");
$.easyui.forEach(_2e.data,false,function(row){
if(row["selected"]){
$.easyui.addArrayItem(vv,row[_2f.valueField]+"");
}
});
if(_2f.multiple){
_19(_2b,vv,_2d);
}else{
_19(_2b,vv.length?[vv[vv.length-1]]:[],_2d);
}
_2f.onLoadSuccess.call(_2b,_2c);
};
function _30(_31,url,_32,_33){
var _34=$.data(_31,"combobox").options;
if(url){
_34.url=url;
}
_32=$.extend({},_34.queryParams,_32||{});
if(_34.onBeforeLoad.call(_31,_32)==false){
return;
}
_34.loader.call(_31,_32,function(_35){
_2a(_31,_35,_33);
},function(){
_34.onLoadError.apply(this,arguments);
});
};
function _36(_37,q){
var _38=$.data(_37,"combobox");
var _39=_38.options;
var _3a=$();
var qq=_39.multiple?q.split(_39.separator):[q];
if(_39.mode=="remote"){
_3b(qq);
_30(_37,null,{q:q},true);
}else{
var _3c=$(_37).combo("panel");
_3c.find(".combobox-item-hover").removeClass("combobox-item-hover");
_3c.find(".combobox-item,.combobox-group").hide();
var _3d=_38.data;
var vv=[];
$.map(qq,function(q){
q=$.trim(q);
var _3e=q;
var _3f=undefined;
_3a=$();
for(var i=0;i<_3d.length;i++){
var row=_3d[i];
if(_39.filter.call(_37,q,row)){
var v=row[_39.valueField];
var s=row[_39.textField];
var g=row[_39.groupField];
var _40=_39.finder.getEl(_37,v).show();
if(s.toLowerCase()==q.toLowerCase()){
_3e=v;
if(_39.reversed){
_3a=_40;
}else{
_13(_37,v,true);
}
}
if(_39.groupField&&_3f!=g){
_39.finder.getGroupEl(_37,g).show();
_3f=g;
}
}
}
vv.push(_3e);
});
_3b(vv);
}
function _3b(vv){
if(_39.reversed){
_3a.addClass("combobox-item-hover");
}else{
_19(_37,_39.multiple?(q?vv:[]):vv,true);
}
};
};
function _41(_42){
var t=$(_42);
var _43=t.combobox("options");
var _44=t.combobox("panel");
var _45=_44.children("div.combobox-item-hover");
if(_45.length){
_45.removeClass("combobox-item-hover");
var row=_43.finder.getRow(_42,_45);
var _46=row[_43.valueField];
if(_43.multiple){
if(_45.hasClass("combobox-item-selected")){
t.combobox("unselect",_46);
}else{
t.combobox("select",_46);
}
}else{
t.combobox("select",_46);
}
}
var vv=[];
$.map(t.combobox("getValues"),function(v){
if(_1(_42,v)>=0){
vv.push(v);
}
});
t.combobox("setValues",vv);
if(!_43.multiple){
t.combobox("hidePanel");
}
};
function _47(_48){
var _49=$.data(_48,"combobox");
var _4a=_49.options;
$(_48).addClass("combobox-f");
$(_48).combo($.extend({},_4a,{onShowPanel:function(){
$(this).combo("panel").find("div.combobox-item:hidden,div.combobox-group:hidden").show();
_19(this,$(this).combobox("getValues"),true);
$(this).combobox("scrollTo",$(this).combobox("getValue"));
_4a.onShowPanel.call(this);
}}));
};
function _4b(e){
$(this).children("div.combobox-item-hover").removeClass("combobox-item-hover");
var _4c=$(e.target).closest("div.combobox-item");
if(!_4c.hasClass("combobox-item-disabled")){
_4c.addClass("combobox-item-hover");
}
e.stopPropagation();
};
function _4d(e){
$(e.target).closest("div.combobox-item").removeClass("combobox-item-hover");
e.stopPropagation();
};
function _4e(e){
var _4f=$(this).panel("options").comboTarget;
if(!_4f){
return;
}
var _50=$(_4f).combobox("options");
var _51=$(e.target).closest("div.combobox-item");
if(!_51.length||_51.hasClass("combobox-item-disabled")){
return;
}
var row=_50.finder.getRow(_4f,_51);
if(!row){
return;
}
if(_50.blurTimer){
clearTimeout(_50.blurTimer);
_50.blurTimer=null;
}
_50.onClick.call(_4f,row);
var _52=row[_50.valueField];
if(_50.multiple){
if(_51.hasClass("combobox-item-selected")){
_1a(_4f,_52);
}else{
_13(_4f,_52);
}
}else{
$(_4f).combobox("setValue",_52).combobox("hidePanel");
}
e.stopPropagation();
};
function _53(e){
var _54=$(this).panel("options").comboTarget;
if(!_54){
return;
}
var _55=$(_54).combobox("options");
if(_55.groupPosition=="sticky"){
var _56=$(this).children(".combobox-stick");
if(!_56.length){
_56=$("
").appendTo(this); } _56.hide(); var _57=$(_54).data("combobox"); $(this).children(".combobox-group:visible").each(function(){ var g=$(this); var _58=_55.finder.getGroup(_54,g); var _59=_57.data[_58.startIndex+_58.count-1]; var _5a=_55.finder.getEl(_54,_59[_55.valueField]); if(g.position().top<0&&_5a.position().top>0){ _56.show().html(g.html()); return false; } }); } }; $.fn.combobox=function(_5b,_5c){ if(typeof _5b=="string"){ var _5d=$.fn.combobox.methods[_5b]; if(_5d){ return _5d(this,_5c); }else{ return this.combo(_5b,_5c); } } _5b=_5b||{}; return this.each(function(){ var _5e=$.data(this,"combobox"); if(_5e){ $.extend(_5e.options,_5b); }else{ _5e=$.data(this,"combobox",{options:$.extend({},$.fn.combobox.defaults,$.fn.combobox.parseOptions(this),_5b),data:[]}); } _47(this); if(_5e.options.data){ _2a(this,_5e.options.data); }else{ var _5f=$.fn.combobox.parseData(this); if(_5f.length){ _2a(this,_5f); } } _30(this); }); }; $.fn.combobox.methods={options:function(jq){ var _60=jq.combo("options"); return $.extend($.data(jq[0],"combobox").options,{width:_60.width,height:_60.height,originalValue:_60.originalValue,disabled:_60.disabled,readonly:_60.readonly}); },cloneFrom:function(jq,_61){ return jq.each(function(){ $(this).combo("cloneFrom",_61); $.data(this,"combobox",$(_61).data("combobox")); $(this).addClass("combobox-f").attr("comboboxName",$(this).attr("textboxName")); }); },getData:function(jq){ return $.data(jq[0],"combobox").data; },setValues:function(jq,_62){ return jq.each(function(){ var _63=$(this).combobox("options"); if($.isArray(_62)){ _62=$.map(_62,function(_64){ if(_64&&typeof _64=="object"){ $.easyui.addArrayItem(_63.mappingRows,_63.valueField,_64); return _64[_63.valueField]; }else{ return _64; } }); } _19(this,_62); }); },setValue:function(jq,_65){ return jq.each(function(){ $(this).combobox("setValues",$.isArray(_65)?_65:[_65]); }); },clear:function(jq){ return jq.each(function(){ _19(this,[]); }); },reset:function(jq){ return jq.each(function(){ var _66=$(this).combobox("options"); if(_66.multiple){ $(this).combobox("setValues",_66.originalValue); }else{ $(this).combobox("setValue",_66.originalValue); } }); },loadData:function(jq,_67){ return jq.each(function(){ _2a(this,_67); }); },reload:function(jq,url){ return jq.each(function(){ if(typeof url=="string"){ _30(this,url); }else{ if(url){ var _68=$(this).combobox("options"); _68.queryParams=url; } _30(this); } }); },select:function(jq,_69){ return jq.each(function(){ _13(this,_69); }); },unselect:function(jq,_6a){ return jq.each(function(){ _1a(this,_6a); }); },scrollTo:function(jq,_6b){ return jq.each(function(){ _5(this,_6b); }); }}; $.fn.combobox.parseOptions=function(_6c){ var t=$(_6c); return $.extend({},$.fn.combo.parseOptions(_6c),$.parser.parseOptions(_6c,["valueField","textField","groupField","groupPosition","mode","method","url",{showItemIcon:"boolean",limitToList:"boolean"}])); }; $.fn.combobox.parseData=function(_6d){ var _6e=[]; var _6f=$(_6d).combobox("options"); $(_6d).children().each(function(){ if(this.tagName.toLowerCase()=="optgroup"){ var _70=$(this).attr("label"); $(this).children().each(function(){ _71(this,_70); }); }else{ _71(this); } }); return _6e; function _71(el,_72){ var t=$(el); var row={}; row[_6f.valueField]=t.attr("value")!=undefined?t.attr("value"):t.text(); row[_6f.textField]=t.text(); row["iconCls"]=$.parser.parseOptions(el,["iconCls"]).iconCls; row["selected"]=t.is(":selected"); row["disabled"]=t.is(":disabled"); if(_72){ _6f.groupField=_6f.groupField||"group"; row[_6f.groupField]=_72; } _6e.push(row); }; }; var _73=0; var _74={render:function(_75,_76,_77){ var _78=$.data(_75,"combobox"); var _79=_78.options; var _7a=$(_75).attr("id")||""; _73++; _78.itemIdPrefix=_7a+"_easyui_combobox_i"+_73; _78.groupIdPrefix=_7a+"_easyui_combobox_g"+_73; _78.groups=[]; var dd=[]; var _7b=undefined; for(var i=0;i<_77.length;i++){ var row=_77[i]; var v=row[_79.valueField]+""; var s=row[_79.textField]; var g=row[_79.groupField]; if(g){ if(_7b!=g){ _7b=g; _78.groups.push({value:g,startIndex:i,count:1}); dd.push("
"); dd.push(_79.groupFormatter?_79.groupFormatter.call(_75,g):g); dd.push("
"); }else{ _78.groups[_78.groups.length-1].count++; } }else{ _7b=undefined; } var cls="combobox-item"+(row.disabled?" combobox-item-disabled":"")+(g?" combobox-gitem":""); dd.push("
"); if(_79.showItemIcon&&row.iconCls){ dd.push(""); } dd.push(_79.formatter?_79.formatter.call(_75,row):s); dd.push("
"); } $(_76).html(dd.join("")); }}; $.fn.combobox.defaults=$.extend({},$.fn.combo.defaults,{valueField:"value",textField:"text",groupPosition:"static",groupField:null,groupFormatter:function(_7c){ return _7c; },mode:"local",method:"post",url:null,data:null,queryParams:{},showItemIcon:false,limitToList:false,unselectedValues:[],mappingRows:[],view:_74,keyHandler:{up:function(e){ _b(this,"prev"); e.preventDefault(); },down:function(e){ _b(this,"next"); e.preventDefault(); },left:function(e){ },right:function(e){ },enter:function(e){ _41(this); },query:function(q,e){ _36(this,q); }},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){ $.fn.combo.defaults.inputEvents.blur(e); var _7d=e.data.target; var _7e=$(_7d).combobox("options"); if(_7e.reversed||_7e.limitToList){ if(_7e.blurTimer){ clearTimeout(_7e.blurTimer); } _7e.blurTimer=setTimeout(function(){ var _7f=$(_7d).parent().length; if(_7f){ if(_7e.reversed){ $(_7d).combobox("setValues",$(_7d).combobox("getValues")); }else{ if(_7e.limitToList){ var vv=[]; $.map($(_7d).combobox("getValues"),function(v){ var _80=$.easyui.indexOfArray($(_7d).combobox("getData"),_7e.valueField,v); if(_80>=0){ vv.push(v); } }); $(_7d).combobox("setValues",vv); } } _7e.blurTimer=null; } },50); } }}),panelEvents:{mouseover:_4b,mouseout:_4d,mousedown:function(e){ e.preventDefault(); e.stopPropagation(); },click:_4e,scroll:_53},filter:function(q,row){ var _81=$(this).combobox("options"); return row[_81.textField].toLowerCase().indexOf(q.toLowerCase())>=0; },formatter:function(row){ var _82=$(this).combobox("options"); return row[_82.textField]; },loader:function(_83,_84,_85){ var _86=$(this).combobox("options"); if(!_86.url){ return false; } $.ajax({type:_86.method,url:_86.url,data:_83,dataType:"json",success:function(_87){ _84(_87); },error:function(){ _85.apply(this,arguments); }}); },loadFilter:function(_88){ return _88; },finder:{getEl:function(_89,_8a){ var _8b=_1(_89,_8a); var id=$.data(_89,"combobox").itemIdPrefix+"_"+_8b; return $("#"+id); },getGroupEl:function(_8c,_8d){ var _8e=$.data(_8c,"combobox"); var _8f=$.easyui.indexOfArray(_8e.groups,"value",_8d); var id=_8e.groupIdPrefix+"_"+_8f; return $("#"+id); },getGroup:function(_90,p){ var _91=$.data(_90,"combobox"); var _92=p.attr("id").substr(_91.groupIdPrefix.length+1); return _91.groups[parseInt(_92)]; },getRow:function(_93,p){ var _94=$.data(_93,"combobox"); var _95=(p instanceof $)?p.attr("id").substr(_94.itemIdPrefix.length+1):_1(_93,p); return _94.data[parseInt(_95)]; }},onBeforeLoad:function(_96){ },onLoadSuccess:function(_97){ },onLoadError:function(){ },onSelect:function(_98){ },onUnselect:function(_99){ },onClick:function(_9a){ }}); })(jQuery);




© 2015 - 2024 Weber Informatics LLC | Privacy Policy