123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414 |
- /**
- * EasyUI for jQuery 1.6.10
- *
- * Copyright (c) 2009-2018 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: info@jeasyui.com
- *
- */
- (function($){
- $(function(){
- $(document).unbind(".combo").bind("mousedown.combo mousewheel.combo",function(e){
- var p=$(e.target).closest("span.combo,div.combo-p,div.menu");
- if(p.length){
- _1(p);
- return;
- }
- $("body>div.combo-p>div.combo-panel:visible").panel("close");
- });
- });
- function _2(_3){
- var _4=$.data(_3,"combo");
- var _5=_4.options;
- if(!_4.panel){
- _4.panel=$("<div class=\"combo-panel\"></div>").appendTo("body");
- _4.panel.panel({minWidth:_5.panelMinWidth,maxWidth:_5.panelMaxWidth,minHeight:_5.panelMinHeight,maxHeight:_5.panelMaxHeight,doSize:false,closed:true,cls:"combo-p",style:{position:"absolute",zIndex:10},onOpen:function(){
- var _6=$(this).panel("options").comboTarget;
- var _7=$.data(_6,"combo");
- if(_7){
- _7.options.onShowPanel.call(_6);
- }
- },onBeforeClose:function(){
- _1($(this).parent());
- },onClose:function(){
- var _8=$(this).panel("options").comboTarget;
- var _9=$(_8).data("combo");
- if(_9){
- _9.options.onHidePanel.call(_8);
- }
- }});
- }
- var _a=$.extend(true,[],_5.icons);
- if(_5.hasDownArrow){
- _a.push({iconCls:"combo-arrow",handler:function(e){
- _10(e.data.target);
- }});
- }
- $(_3).addClass("combo-f").textbox($.extend({},_5,{icons:_a,onChange:function(){
- }}));
- $(_3).attr("comboName",$(_3).attr("textboxName"));
- _4.combo=$(_3).next();
- _4.combo.addClass("combo");
- _4.panel.unbind(".combo");
- for(var _b in _5.panelEvents){
- _4.panel.bind(_b+".combo",{target:_3},_5.panelEvents[_b]);
- }
- };
- function _c(_d){
- var _e=$.data(_d,"combo");
- var _f=_e.options;
- var p=_e.panel;
- if(p.is(":visible")){
- p.panel("close");
- }
- if(!_f.cloned){
- p.panel("destroy");
- }
- $(_d).textbox("destroy");
- };
- function _10(_11){
- var _12=$.data(_11,"combo").panel;
- if(_12.is(":visible")){
- var _13=_12.combo("combo");
- _14(_13);
- if(_13!=_11){
- $(_11).combo("showPanel");
- }
- }else{
- var p=$(_11).closest("div.combo-p").children(".combo-panel");
- $("div.combo-panel:visible").not(_12).not(p).panel("close");
- $(_11).combo("showPanel");
- }
- $(_11).combo("textbox").focus();
- };
- function _1(_15){
- $(_15).find(".combo-f").each(function(){
- var p=$(this).combo("panel");
- if(p.is(":visible")){
- p.panel("close");
- }
- });
- };
- function _16(e){
- var _17=e.data.target;
- var _18=$.data(_17,"combo");
- var _19=_18.options;
- if(!_19.editable){
- _10(_17);
- }else{
- var p=$(_17).closest("div.combo-p").children(".combo-panel");
- $("div.combo-panel:visible").not(p).each(function(){
- var _1a=$(this).combo("combo");
- if(_1a!=_17){
- _14(_1a);
- }
- });
- }
- };
- function _1b(e){
- var _1c=e.data.target;
- var t=$(_1c);
- var _1d=t.data("combo");
- var _1e=t.combo("options");
- _1d.panel.panel("options").comboTarget=_1c;
- switch(e.keyCode){
- case 38:
- _1e.keyHandler.up.call(_1c,e);
- break;
- case 40:
- _1e.keyHandler.down.call(_1c,e);
- break;
- case 37:
- _1e.keyHandler.left.call(_1c,e);
- break;
- case 39:
- _1e.keyHandler.right.call(_1c,e);
- break;
- case 13:
- e.preventDefault();
- _1e.keyHandler.enter.call(_1c,e);
- return false;
- case 9:
- case 27:
- _14(_1c);
- break;
- default:
- if(_1e.editable){
- if(_1d.timer){
- clearTimeout(_1d.timer);
- }
- _1d.timer=setTimeout(function(){
- var q=t.combo("getText");
- if(_1d.previousText!=q){
- _1d.previousText=q;
- t.combo("showPanel");
- _1e.keyHandler.query.call(_1c,q,e);
- t.combo("validate");
- }
- },_1e.delay);
- }
- }
- };
- function _1f(e){
- var _20=e.data.target;
- var _21=$(_20).data("combo");
- if(_21.timer){
- clearTimeout(_21.timer);
- }
- };
- function _22(_23){
- var _24=$.data(_23,"combo");
- var _25=_24.combo;
- var _26=_24.panel;
- var _27=$(_23).combo("options");
- var _28=_26.panel("options");
- _28.comboTarget=_23;
- if(_28.closed){
- _26.panel("panel").show().css({zIndex:($.fn.menu?$.fn.menu.defaults.zIndex++:($.fn.window?$.fn.window.defaults.zIndex++:99)),left:-999999});
- _26.panel("resize",{width:(_27.panelWidth?_27.panelWidth:_25._outerWidth()),height:_27.panelHeight});
- _26.panel("panel").hide();
- _26.panel("open");
- }
- (function(){
- if(_28.comboTarget==_23&&_26.is(":visible")){
- _26.panel("move",{left:_29(),top:_2a()});
- setTimeout(arguments.callee,200);
- }
- })();
- function _29(){
- var _2b=_25.offset().left;
- if(_27.panelAlign=="right"){
- _2b+=_25._outerWidth()-_26._outerWidth();
- }
- if(_2b+_26._outerWidth()>$(window)._outerWidth()+$(document).scrollLeft()){
- _2b=$(window)._outerWidth()+$(document).scrollLeft()-_26._outerWidth();
- }
- if(_2b<0){
- _2b=0;
- }
- return _2b;
- };
- function _2a(){
- if(_27.panelValign=="top"){
- var top=_25.offset().top-_26._outerHeight();
- }else{
- if(_27.panelValign=="bottom"){
- var top=_25.offset().top+_25._outerHeight();
- }else{
- var top=_25.offset().top+_25._outerHeight();
- if(top+_26._outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){
- top=_25.offset().top-_26._outerHeight();
- }
- if(top<$(document).scrollTop()){
- top=_25.offset().top+_25._outerHeight();
- }
- }
- }
- return top;
- };
- };
- function _14(_2c){
- var _2d=$.data(_2c,"combo").panel;
- _2d.panel("close");
- };
- function _2e(_2f,_30){
- var _31=$.data(_2f,"combo");
- var _32=$(_2f).textbox("getText");
- if(_32!=_30){
- $(_2f).textbox("setText",_30);
- }
- _31.previousText=_30;
- };
- function _33(_34){
- var _35=$.data(_34,"combo");
- var _36=_35.options;
- var _37=$(_34).next();
- var _38=[];
- _37.find(".textbox-value").each(function(){
- _38.push($(this).val());
- });
- if(_36.multivalue){
- return _38;
- }else{
- return _38.length?_38[0].split(_36.separator):_38;
- }
- };
- function _39(_3a,_3b){
- var _3c=$.data(_3a,"combo");
- var _3d=_3c.combo;
- var _3e=$(_3a).combo("options");
- if(!$.isArray(_3b)){
- _3b=_3b.split(_3e.separator);
- }
- var _3f=_33(_3a);
- _3d.find(".textbox-value").remove();
- if(_3b.length){
- if(_3e.multivalue){
- for(var i=0;i<_3b.length;i++){
- _40(_3b[i]);
- }
- }else{
- _40(_3b.join(_3e.separator));
- }
- }
- function _40(_41){
- var _42=$(_3a).attr("textboxName")||"";
- var _43=$("<input type=\"hidden\" class=\"textbox-value\">").appendTo(_3d);
- _43.attr("name",_42);
- if(_3e.disabled){
- _43.attr("disabled","disabled");
- }
- _43.val(_41);
- };
- var _44=(function(){
- if(_3e.onChange==$.parser.emptyFn){
- return false;
- }
- if(_3f.length!=_3b.length){
- return true;
- }
- for(var i=0;i<_3b.length;i++){
- if(_3b[i]!=_3f[i]){
- return true;
- }
- }
- return false;
- })();
- if(_44){
- $(_3a).val(_3b.join(_3e.separator));
- if(_3e.multiple){
- _3e.onChange.call(_3a,_3b,_3f);
- }else{
- _3e.onChange.call(_3a,_3b[0],_3f[0]);
- }
- $(_3a).closest("form").trigger("_change",[_3a]);
- }
- };
- function _45(_46){
- var _47=_33(_46);
- return _47[0];
- };
- function _48(_49,_4a){
- _39(_49,[_4a]);
- };
- function _4b(_4c){
- var _4d=$.data(_4c,"combo").options;
- var _4e=_4d.onChange;
- _4d.onChange=$.parser.emptyFn;
- if(_4d.multiple){
- _39(_4c,_4d.value?_4d.value:[]);
- }else{
- _48(_4c,_4d.value);
- }
- _4d.onChange=_4e;
- };
- $.fn.combo=function(_4f,_50){
- if(typeof _4f=="string"){
- var _51=$.fn.combo.methods[_4f];
- if(_51){
- return _51(this,_50);
- }else{
- return this.textbox(_4f,_50);
- }
- }
- _4f=_4f||{};
- return this.each(function(){
- var _52=$.data(this,"combo");
- if(_52){
- $.extend(_52.options,_4f);
- if(_4f.value!=undefined){
- _52.options.originalValue=_4f.value;
- }
- }else{
- _52=$.data(this,"combo",{options:$.extend({},$.fn.combo.defaults,$.fn.combo.parseOptions(this),_4f),previousText:""});
- if(_52.options.multiple&&_52.options.value==""){
- _52.options.originalValue=[];
- }else{
- _52.options.originalValue=_52.options.value;
- }
- }
- _2(this);
- _4b(this);
- });
- };
- $.fn.combo.methods={options:function(jq){
- var _53=jq.textbox("options");
- return $.extend($.data(jq[0],"combo").options,{width:_53.width,height:_53.height,disabled:_53.disabled,readonly:_53.readonly});
- },cloneFrom:function(jq,_54){
- return jq.each(function(){
- $(this).textbox("cloneFrom",_54);
- $.data(this,"combo",{options:$.extend(true,{cloned:true},$(_54).combo("options")),combo:$(this).next(),panel:$(_54).combo("panel")});
- $(this).addClass("combo-f").attr("comboName",$(this).attr("textboxName"));
- });
- },combo:function(jq){
- return jq.closest(".combo-panel").panel("options").comboTarget;
- },panel:function(jq){
- return $.data(jq[0],"combo").panel;
- },destroy:function(jq){
- return jq.each(function(){
- _c(this);
- });
- },showPanel:function(jq){
- return jq.each(function(){
- _22(this);
- });
- },hidePanel:function(jq){
- return jq.each(function(){
- _14(this);
- });
- },clear:function(jq){
- return jq.each(function(){
- $(this).textbox("setText","");
- var _55=$.data(this,"combo").options;
- if(_55.multiple){
- $(this).combo("setValues",[]);
- }else{
- $(this).combo("setValue","");
- }
- });
- },reset:function(jq){
- return jq.each(function(){
- var _56=$.data(this,"combo").options;
- if(_56.multiple){
- $(this).combo("setValues",_56.originalValue);
- }else{
- $(this).combo("setValue",_56.originalValue);
- }
- });
- },setText:function(jq,_57){
- return jq.each(function(){
- _2e(this,_57);
- });
- },getValues:function(jq){
- return _33(jq[0]);
- },setValues:function(jq,_58){
- return jq.each(function(){
- _39(this,_58);
- });
- },getValue:function(jq){
- return _45(jq[0]);
- },setValue:function(jq,_59){
- return jq.each(function(){
- _48(this,_59);
- });
- }};
- $.fn.combo.parseOptions=function(_5a){
- var t=$(_5a);
- return $.extend({},$.fn.textbox.parseOptions(_5a),$.parser.parseOptions(_5a,["separator","panelAlign",{panelWidth:"number",hasDownArrow:"boolean",delay:"number",reversed:"boolean",multivalue:"boolean",selectOnNavigation:"boolean"},{panelMinWidth:"number",panelMaxWidth:"number",panelMinHeight:"number",panelMaxHeight:"number"}]),{panelHeight:(t.attr("panelHeight")=="auto"?"auto":parseInt(t.attr("panelHeight"))||undefined),multiple:(t.attr("multiple")?true:undefined)});
- };
- $.fn.combo.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:{click:_16,keydown:_1b,paste:_1b,drop:_1b,blur:_1f},panelEvents:{mousedown:function(e){
- e.preventDefault();
- e.stopPropagation();
- }},panelWidth:null,panelHeight:300,panelMinWidth:null,panelMaxWidth:null,panelMinHeight:null,panelMaxHeight:null,panelAlign:"left",panelValign:"auto",reversed:false,multiple:false,multivalue:true,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(_5b,_5c){
- }});
- })(jQuery);
|