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