/** * jQuery EasyUI 1.3.2 * * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. * * Licensed under the GPL or commercial licenses * To use it on other terms please contact us: jeasyui@gmail.com * http://www.gnu.org/licenses/gpl.txt * http://www.jeasyui.com/license_commercial.php * */ (function($){ function _1(_2,_3){ var _4=$.data(_2,"combo").options; var _5=$.data(_2,"combo").combo; var _6=$.data(_2,"combo").panel; if(_3){ _4.width=_3; } if(isNaN(_4.width)){ var c=$(_2).clone(); c.css("visibility","hidden"); c.appendTo("body"); _4.width=c.outerWidth(); c.remove(); } _5.appendTo("body"); var _7=_5.find("input.combo-text"); var _8=_5.find(".combo-arrow"); var _9=_4.hasDownArrow?_8._outerWidth():0; _5._outerWidth(_4.width)._outerHeight(_4.height); _7._outerWidth(_5.width()-_9); _7.css({height:_5.height()+"px",lineHeight:_5.height()+"px"}); _8._outerHeight(_5.height()); _6.panel("resize",{width:(_4.panelWidth?_4.panelWidth:_5.outerWidth()),height:_4.panelHeight}); _5.insertAfter(_2); }; function _a(_b){ var _c=$.data(_b,"combo").options; var _d=$.data(_b,"combo").combo; if(_c.hasDownArrow){ _d.find(".combo-arrow").show(); }else{ _d.find(".combo-arrow").hide(); } }; function _e(_f){ $(_f).addClass("combo-f").hide(); var _10=$("<span class=\"combo\"></span>").insertAfter(_f); var _11=$("<input type=\"text\" class=\"combo-text\">").appendTo(_10); $("<span><span class=\"combo-arrow\"></span></span>").appendTo(_10); $("<input type=\"hidden\" class=\"combo-value\">").appendTo(_10); var _12=$("<div class=\"combo-panel\"></div>").appendTo("body"); _12.panel({doSize:false,closed:true,cls:"combo-p",style:{position:"absolute",zIndex:10},onOpen:function(){ $(this).panel("resize"); }}); var _13=$(_f).attr("name"); if(_13){ _10.find("input.combo-value").attr("name",_13); $(_f).removeAttr("name").attr("comboName",_13); } _11.attr("autocomplete","off"); return {combo:_10,panel:_12}; }; function _14(_15){ var _16=$.data(_15,"combo").combo.find("input.combo-text"); _16.validatebox("destroy"); $.data(_15,"combo").panel.panel("destroy"); $.data(_15,"combo").combo.remove(); $(_15).remove(); }; function _17(_18){ var _19=$.data(_18,"combo"); var _1a=_19.options; var _1b=$.data(_18,"combo").combo; var _1c=$.data(_18,"combo").panel; var _1d=_1b.find(".combo-text"); var _1e=_1b.find(".combo-arrow"); $(document).unbind(".combo").bind("mousedown.combo",function(e){ var p=$(e.target).closest("span.combo,div.combo-panel"); if(p.length){ return; } var _1f=$("body>div.combo-p>div.combo-panel"); _1f.panel("close"); }); _1b.unbind(".combo"); _1c.unbind(".combo"); _1d.unbind(".combo"); _1e.unbind(".combo"); if(!_1a.disabled){ _1d.bind("mousedown.combo",function(e){ $("div.combo-panel").not(_1c).panel("close"); e.stopPropagation(); }).bind("keydown.combo",function(e){ switch(e.keyCode){ case 38: _1a.keyHandler.up.call(_18); break; case 40: _1a.keyHandler.down.call(_18); break; case 13: e.preventDefault(); _1a.keyHandler.enter.call(_18); return false; case 9: case 27: _28(_18); break; default: if(_1a.editable){ if(_19.timer){ clearTimeout(_19.timer); } _19.timer=setTimeout(function(){ var q=_1d.val(); if(_19.previousValue!=q){ _19.previousValue=q; $(_18).combo("showPanel"); _1a.keyHandler.query.call(_18,_1d.val()); _2c(_18,true); } },_1a.delay); } } }); _1e.bind("click.combo",function(){ if(_1c.is(":visible")){ _28(_18); }else{ $("div.combo-panel").panel("close"); $(_18).combo("showPanel"); } _1d.focus(); }).bind("mouseenter.combo",function(){ $(this).addClass("combo-arrow-hover"); }).bind("mouseleave.combo",function(){ $(this).removeClass("combo-arrow-hover"); }).bind("mousedown.combo",function(){ }); } }; function _20(_21){ var _22=$.data(_21,"combo").options; var _23=$.data(_21,"combo").combo; var _24=$.data(_21,"combo").panel; if($.fn.window){ _24.panel("panel").css("z-index",$.fn.window.defaults.zIndex++); } _24.panel("move",{left:_23.offset().left,top:_25()}); if(_24.panel("options").closed){ _24.panel("open"); _22.onShowPanel.call(_21); } (function(){ if(_24.is(":visible")){ _24.panel("move",{left:_26(),top:_25()}); setTimeout(arguments.callee,200); } })(); function _26(){ var _27=_23.offset().left; if(_27+_24._outerWidth()>$(window)._outerWidth()+$(document).scrollLeft()){ _27=$(window)._outerWidth()+$(document).scrollLeft()-_24._outerWidth(); } if(_27<0){ _27=0; } return _27; }; function _25(){ var top=_23.offset().top+_23._outerHeight(); if(top+_24._outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ top=_23.offset().top-_24._outerHeight(); } if(top<$(document).scrollTop()){ top=_23.offset().top+_23._outerHeight(); } return top; }; }; function _28(_29){ var _2a=$.data(_29,"combo").options; var _2b=$.data(_29,"combo").panel; _2b.panel("close"); _2a.onHidePanel.call(_29); }; function _2c(_2d,_2e){ var _2f=$.data(_2d,"combo").options; var _30=$.data(_2d,"combo").combo.find("input.combo-text"); _30.validatebox(_2f); if(_2e){ _30.validatebox("validate"); } }; function _31(_32,_33){ var _34=$.data(_32,"combo").options; var _35=$.data(_32,"combo").combo; if(_33){ _34.disabled=true; $(_32).attr("disabled",true); _35.find(".combo-value").attr("disabled",true); _35.find(".combo-text").attr("disabled",true); }else{ _34.disabled=false; $(_32).removeAttr("disabled"); _35.find(".combo-value").removeAttr("disabled"); _35.find(".combo-text").removeAttr("disabled"); } }; function _36(_37){ var _38=$.data(_37,"combo").options; var _39=$.data(_37,"combo").combo; if(_38.multiple){ _39.find("input.combo-value").remove(); }else{ _39.find("input.combo-value").val(""); } _39.find("input.combo-text").val(""); }; function _3a(_3b){ var _3c=$.data(_3b,"combo").combo; return _3c.find("input.combo-text").val(); }; function _3d(_3e,_3f){ var _40=$.data(_3e,"combo").combo; _40.find("input.combo-text").val(_3f); _2c(_3e,true); $.data(_3e,"combo").previousValue=_3f; }; function _41(_42){ var _43=[]; var _44=$.data(_42,"combo").combo; _44.find("input.combo-value").each(function(){ _43.push($(this).val()); }); return _43; }; function _45(_46,_47){ var _48=$.data(_46,"combo").options; var _49=_41(_46); var _4a=$.data(_46,"combo").combo; _4a.find("input.combo-value").remove(); var _4b=$(_46).attr("comboName"); for(var i=0;i<_47.length;i++){ var _4c=$("<input type=\"hidden\" class=\"combo-value\">").appendTo(_4a); if(_4b){ _4c.attr("name",_4b); } _4c.val(_47[i]); } var tmp=[]; for(var i=0;i<_49.length;i++){ tmp[i]=_49[i]; } var aa=[]; for(var i=0;i<_47.length;i++){ for(var j=0;j<tmp.length;j++){ if(_47[i]==tmp[j]){ aa.push(_47[i]); tmp.splice(j,1); break; } } } if(aa.length!=_47.length||_47.length!=_49.length){ if(_48.multiple){ _48.onChange.call(_46,_47,_49); }else{ _48.onChange.call(_46,_47[0],_49[0]); } } }; function _4d(_4e){ var _4f=_41(_4e); return _4f[0]; }; function _50(_51,_52){ _45(_51,[_52]); }; function _53(_54){ var _55=$.data(_54,"combo").options; var fn=_55.onChange; _55.onChange=function(){ }; if(_55.multiple){ if(_55.value){ if(typeof _55.value=="object"){ _45(_54,_55.value); }else{ _50(_54,_55.value); } }else{ _45(_54,[]); } _55.originalValue=_41(_54); }else{ _50(_54,_55.value); _55.originalValue=_55.value; } _55.onChange=fn; }; $.fn.combo=function(_56,_57){ if(typeof _56=="string"){ return $.fn.combo.methods[_56](this,_57); } _56=_56||{}; return this.each(function(){ var _58=$.data(this,"combo"); if(_58){ $.extend(_58.options,_56); }else{ var r=_e(this); _58=$.data(this,"combo",{options:$.extend({},$.fn.combo.defaults,$.fn.combo.parseOptions(this),_56),combo:r.combo,panel:r.panel,previousValue:null}); $(this).removeAttr("disabled"); } $("input.combo-text",_58.combo).attr("readonly",!_58.options.editable); _a(this); _31(this,_58.options.disabled); _1(this); _17(this); _2c(this); _53(this); }); }; $.fn.combo.methods={options:function(jq){ return $.data(jq[0],"combo").options; },panel:function(jq){ return $.data(jq[0],"combo").panel; },textbox:function(jq){ return $.data(jq[0],"combo").combo.find("input.combo-text"); },destroy:function(jq){ return jq.each(function(){ _14(this); }); },resize:function(jq,_59){ return jq.each(function(){ _1(this,_59); }); },showPanel:function(jq){ return jq.each(function(){ _20(this); }); },hidePanel:function(jq){ return jq.each(function(){ _28(this); }); },disable:function(jq){ return jq.each(function(){ _31(this,true); _17(this); }); },enable:function(jq){ return jq.each(function(){ _31(this,false); _17(this); }); },validate:function(jq){ return jq.each(function(){ _2c(this,true); }); },isValid:function(jq){ var _5a=$.data(jq[0],"combo").combo.find("input.combo-text"); return _5a.validatebox("isValid"); },clear:function(jq){ return jq.each(function(){ _36(this); }); },reset:function(jq){ return jq.each(function(){ var _5b=$.data(this,"combo").options; if(_5b.multiple){ $(this).combo("setValues",_5b.originalValue); }else{ $(this).combo("setValue",_5b.originalValue); } }); },getText:function(jq){ return _3a(jq[0]); },setText:function(jq,_5c){ return jq.each(function(){ _3d(this,_5c); }); },getValues:function(jq){ return _41(jq[0]); },setValues:function(jq,_5d){ return jq.each(function(){ _45(this,_5d); }); },getValue:function(jq){ return _4d(jq[0]); },setValue:function(jq,_5e){ return jq.each(function(){ _50(this,_5e); }); }}; $.fn.combo.parseOptions=function(_5f){ var t=$(_5f); return $.extend({},$.fn.validatebox.parseOptions(_5f),$.parser.parseOptions(_5f,["width","height","separator",{panelWidth:"number",editable:"boolean",hasDownArrow:"boolean",delay:"number"}]),{panelHeight:(t.attr("panelHeight")=="auto"?"auto":parseInt(t.attr("panelHeight"))||undefined),multiple:(t.attr("multiple")?true:undefined),disabled:(t.attr("disabled")?true:undefined),value:(t.val()||undefined)}); }; $.fn.combo.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,panelWidth:null,panelHeight:200,multiple:false,separator:",",editable:true,disabled:false,hasDownArrow:true,value:"",delay:200,keyHandler:{up:function(){ },down:function(){ },enter:function(){ },query:function(q){ }},onShowPanel:function(){ },onHidePanel:function(){ },onChange:function(_60,_61){ }}); })(jQuery);