/** * jQuery EasyUI 1.5.1 * * Copyright (c) 2009-2016 www.jeasyui.com. All rights reserved. * * Licensed under the commercial license: http://www.jeasyui.com/license_commercial.php * To use it on other terms please contact us: info@jeasyui.com * */ (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); } } 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,_29,_2a){ var _2b=$.data(_28,"combobox"); var _2c=_2b.options; _2b.data=_2c.loadFilter.call(_28,_29); _2c.view.render.call(_2c.view,_28,$(_28).combo("panel"),_2b.data); var vv=$(_28).combobox("getValues"); $.easyui.forEach(_2b.data,false,function(row){ if(row["selected"]){ $.easyui.addArrayItem(vv,row[_2c.valueField]+""); } }); if(_2c.multiple){ _19(_28,vv,_2a); }else{ _19(_28,vv.length?[vv[vv.length-1]]:[],_2a); } _2c.onLoadSuccess.call(_28,_29); }; function _2d(_2e,url,_2f,_30){ var _31=$.data(_2e,"combobox").options; if(url){ _31.url=url; } _2f=$.extend({},_31.queryParams,_2f||{}); if(_31.onBeforeLoad.call(_2e,_2f)==false){ return; } _31.loader.call(_2e,_2f,function(_32){ _27(_2e,_32,_30); },function(){ _31.onLoadError.apply(this,arguments); }); }; function _33(_34,q){ var _35=$.data(_34,"combobox"); var _36=_35.options; var _37=$(); var qq=_36.multiple?q.split(_36.separator):[q]; if(_36.mode=="remote"){ _38(qq); _2d(_34,null,{q:q},true); }else{ var _39=$(_34).combo("panel"); _39.find(".combobox-item-hover").removeClass("combobox-item-hover"); _39.find(".combobox-item,.combobox-group").hide(); var _3a=_35.data; var vv=[]; $.map(qq,function(q){ q=$.trim(q); var _3b=q; var _3c=undefined; _37=$(); for(var i=0;i<_3a.length;i++){ var row=_3a[i]; if(_36.filter.call(_34,q,row)){ var v=row[_36.valueField]; var s=row[_36.textField]; var g=row[_36.groupField]; var _3d=_36.finder.getEl(_34,v).show(); if(s.toLowerCase()==q.toLowerCase()){ _3b=v; if(_36.reversed){ _37=_3d; }else{ _13(_34,v,true); } } if(_36.groupField&&_3c!=g){ _36.finder.getGroupEl(_34,g).show(); _3c=g; } } } vv.push(_3b); }); _38(vv); } function _38(vv){ if(_36.reversed){ _37.addClass("combobox-item-hover"); }else{ _19(_34,_36.multiple?(q?vv:[]):vv,true); } }; }; function _3e(_3f){ var t=$(_3f); var _40=t.combobox("options"); var _41=t.combobox("panel"); var _42=_41.children("div.combobox-item-hover"); if(_42.length){ _42.removeClass("combobox-item-hover"); var row=_40.finder.getRow(_3f,_42); var _43=row[_40.valueField]; if(_40.multiple){ if(_42.hasClass("combobox-item-selected")){ t.combobox("unselect",_43); }else{ t.combobox("select",_43); } }else{ t.combobox("select",_43); } } var vv=[]; $.map(t.combobox("getValues"),function(v){ if(_1(_3f,v)>=0){ vv.push(v); } }); t.combobox("setValues",vv); if(!_40.multiple){ t.combobox("hidePanel"); } }; function _44(_45){ var _46=$.data(_45,"combobox"); var _47=_46.options; $(_45).addClass("combobox-f"); $(_45).combo($.extend({},_47,{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")); _47.onShowPanel.call(this); }})); var p=$(_45).combo("panel"); p.unbind(".combobox"); for(var _48 in _47.panelEvents){ p.bind(_48+".combobox",{target:_45},_47.panelEvents[_48]); } }; function _49(e){ $(this).children("div.combobox-item-hover").removeClass("combobox-item-hover"); var _4a=$(e.target).closest("div.combobox-item"); if(!_4a.hasClass("combobox-item-disabled")){ _4a.addClass("combobox-item-hover"); } e.stopPropagation(); }; function _4b(e){ $(e.target).closest("div.combobox-item").removeClass("combobox-item-hover"); e.stopPropagation(); }; function _4c(e){ var _4d=$(this).panel("options").comboTarget; if(!_4d){ return; } var _4e=$(_4d).combobox("options"); var _4f=$(e.target).closest("div.combobox-item"); if(!_4f.length||_4f.hasClass("combobox-item-disabled")){ return; } var row=_4e.finder.getRow(_4d,_4f); if(!row){ return; } if(_4e.blurTimer){ clearTimeout(_4e.blurTimer); _4e.blurTimer=null; } _4e.onClick.call(_4d,row); var _50=row[_4e.valueField]; if(_4e.multiple){ if(_4f.hasClass("combobox-item-selected")){ _1a(_4d,_50); }else{ _13(_4d,_50); } }else{ $(_4d).combobox("setValue",_50).combobox("hidePanel"); } e.stopPropagation(); }; function _51(e){ var _52=$(this).panel("options").comboTarget; if(!_52){ return; } var _53=$(_52).combobox("options"); if(_53.groupPosition=="sticky"){ var _54=$(this).children(".combobox-stick"); if(!_54.length){ _54=$("
").appendTo(this); } _54.hide(); var _55=$(_52).data("combobox"); $(this).children(".combobox-group:visible").each(function(){ var g=$(this); var _56=_53.finder.getGroup(_52,g); var _57=_55.data[_56.startIndex+_56.count-1]; var _58=_53.finder.getEl(_52,_57[_53.valueField]); if(g.position().top<0&&_58.position().top>0){ _54.show().html(g.html()); return false; } }); } }; $.fn.combobox=function(_59,_5a){ if(typeof _59=="string"){ var _5b=$.fn.combobox.methods[_59]; if(_5b){ return _5b(this,_5a); }else{ return this.combo(_59,_5a); } } _59=_59||{}; return this.each(function(){ var _5c=$.data(this,"combobox"); if(_5c){ $.extend(_5c.options,_59); }else{ _5c=$.data(this,"combobox",{options:$.extend({},$.fn.combobox.defaults,$.fn.combobox.parseOptions(this),_59),data:[]}); } _44(this); if(_5c.options.data){ _27(this,_5c.options.data); }else{ var _5d=$.fn.combobox.parseData(this); if(_5d.length){ _27(this,_5d); } } _2d(this); }); }; $.fn.combobox.methods={options:function(jq){ var _5e=jq.combo("options"); return $.extend($.data(jq[0],"combobox").options,{width:_5e.width,height:_5e.height,originalValue:_5e.originalValue,disabled:_5e.disabled,readonly:_5e.readonly}); },cloneFrom:function(jq,_5f){ return jq.each(function(){ $(this).combo("cloneFrom",_5f); $.data(this,"combobox",$(_5f).data("combobox")); $(this).addClass("combobox-f").attr("comboboxName",$(this).attr("textboxName")); }); },getData:function(jq){ return $.data(jq[0],"combobox").data; },setValues:function(jq,_60){ return jq.each(function(){ _19(this,_60); }); },setValue:function(jq,_61){ return jq.each(function(){ _19(this,$.isArray(_61)?_61:[_61]); }); },clear:function(jq){ return jq.each(function(){ _19(this,[]); }); },reset:function(jq){ return jq.each(function(){ var _62=$(this).combobox("options"); if(_62.multiple){ $(this).combobox("setValues",_62.originalValue); }else{ $(this).combobox("setValue",_62.originalValue); } }); },loadData:function(jq,_63){ return jq.each(function(){ _27(this,_63); }); },reload:function(jq,url){ return jq.each(function(){ if(typeof url=="string"){ _2d(this,url); }else{ if(url){ var _64=$(this).combobox("options"); _64.queryParams=url; } _2d(this); } }); },select:function(jq,_65){ return jq.each(function(){ _13(this,_65); }); },unselect:function(jq,_66){ return jq.each(function(){ _1a(this,_66); }); },scrollTo:function(jq,_67){ return jq.each(function(){ _5(this,_67); }); }}; $.fn.combobox.parseOptions=function(_68){ var t=$(_68); return $.extend({},$.fn.combo.parseOptions(_68),$.parser.parseOptions(_68,["valueField","textField","groupField","groupPosition","mode","method","url",{showItemIcon:"boolean",limitToList:"boolean"}])); }; $.fn.combobox.parseData=function(_69){ var _6a=[]; var _6b=$(_69).combobox("options"); $(_69).children().each(function(){ if(this.tagName.toLowerCase()=="optgroup"){ var _6c=$(this).attr("label"); $(this).children().each(function(){ _6d(this,_6c); }); }else{ _6d(this); } }); return _6a; function _6d(el,_6e){ var t=$(el); var row={}; row[_6b.valueField]=t.attr("value")!=undefined?t.attr("value"):t.text(); row[_6b.textField]=t.text(); row["selected"]=t.is(":selected"); row["disabled"]=t.is(":disabled"); if(_6e){ _6b.groupField=_6b.groupField||"group"; row[_6b.groupField]=_6e; } _6a.push(row); }; }; var _6f=0; var _70={render:function(_71,_72,_73){ var _74=$.data(_71,"combobox"); var _75=_74.options; _6f++; _74.itemIdPrefix="_easyui_combobox_i"+_6f; _74.groupIdPrefix="_easyui_combobox_g"+_6f; _74.groups=[]; var dd=[]; var _76=undefined; for(var i=0;i<_73.length;i++){ var row=_73[i]; var v=row[_75.valueField]+""; var s=row[_75.textField]; var g=row[_75.groupField]; if(g){ if(_76!=g){ _76=g; _74.groups.push({value:g,startIndex:i,count:1}); dd.push("
"); dd.push(_75.groupFormatter?_75.groupFormatter.call(_71,g):g); dd.push("
"); }else{ _74.groups[_74.groups.length-1].count++; } }else{ _76=undefined; } var cls="combobox-item"+(row.disabled?" combobox-item-disabled":"")+(g?" combobox-gitem":""); dd.push("
"); if(_75.showItemIcon&&row.iconCls){ dd.push(""); } dd.push(_75.formatter?_75.formatter.call(_71,row):s); dd.push("
"); } $(_72).html(dd.join("")); }}; $.fn.combobox.defaults=$.extend({},$.fn.combo.defaults,{valueField:"value",textField:"text",groupPosition:"static",groupField:null,groupFormatter:function(_77){ return _77; },mode:"local",method:"post",url:null,data:null,queryParams:{},showItemIcon:false,limitToList:false,view:_70,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){ _3e(this); },query:function(q,e){ _33(this,q); }},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){ var _78=e.data.target; var _79=$(_78).combobox("options"); if(_79.reversed||_79.limitToList){ if(_79.blurTimer){ clearTimeout(_79.blurTimer); } _79.blurTimer=setTimeout(function(){ var _7a=$(_78).parent().length; if(_7a){ if(_79.reversed){ $(_78).combobox("setValues",$(_78).combobox("getValues")); }else{ if(_79.limitToList){ _3e(_78); } } _79.blurTimer=null; } },50); } }}),panelEvents:{mouseover:_49,mouseout:_4b,click:_4c,scroll:_51},filter:function(q,row){ var _7b=$(this).combobox("options"); return row[_7b.textField].toLowerCase().indexOf(q.toLowerCase())>=0; },formatter:function(row){ var _7c=$(this).combobox("options"); return row[_7c.textField]; },loader:function(_7d,_7e,_7f){ var _80=$(this).combobox("options"); if(!_80.url){ return false; } $.ajax({type:_80.method,url:_80.url,data:_7d,dataType:"json",success:function(_81){ _7e(_81); },error:function(){ _7f.apply(this,arguments); }}); },loadFilter:function(_82){ return _82; },finder:{getEl:function(_83,_84){ var _85=_1(_83,_84); var id=$.data(_83,"combobox").itemIdPrefix+"_"+_85; return $("#"+id); },getGroupEl:function(_86,_87){ var _88=$.data(_86,"combobox"); var _89=$.easyui.indexOfArray(_88.groups,"value",_87); var id=_88.groupIdPrefix+"_"+_89; return $("#"+id); },getGroup:function(_8a,p){ var _8b=$.data(_8a,"combobox"); var _8c=p.attr("id").substr(_8b.groupIdPrefix.length+1); return _8b.groups[parseInt(_8c)]; },getRow:function(_8d,p){ var _8e=$.data(_8d,"combobox"); var _8f=(p instanceof $)?p.attr("id").substr(_8e.itemIdPrefix.length+1):_1(_8d,p); return _8e.data[parseInt(_8f)]; }},onBeforeLoad:function(_90){ },onLoadSuccess:function(_91){ },onLoadError:function(){ },onSelect:function(_92){ },onUnselect:function(_93){ },onClick:function(_94){ }}); })(jQuery);