Newer
Older
$.component("coral.textbox",$.coral.inputbase,{version:$.coral.version,castProperties:["dataCustom","regSpecialChars","specialCharsMap","title","buttons","buttonOptions","triggers","showRequiredMark","hideRequiredMark"],options:{swfPath:$.coral.contextPath+"/jquery-cui/resource/swfupload.swf",hasTips:false,showStar:true,showClose:false,dataCustom:null,autoDecode:false,regSpecialChars:["^","$","(",")","[","]","{","}",".","?","+","*","|","\\"],specialCharsMap:{"&":"&","#":"#",">":">","<":"<","‘":"&lsquo","’":"&rsquo",",":"&sbquo","'":"'","\\":"\",'"':"“","!":"!","%":"%","~":"~","@":"@","=":"=","(":"(",")":")","{":"{","}":"}","[":"[","]":"]","$":"$","?":"?","*":"*","|":"|","^":"^",".":".","+":"+","/":"/"," ":" "},value:"",readonly:false,readonlyInput:false,disabled:false,required:false,isLabel:false,title:null,buttons:[],useHiddenInput:true,errMsg:null,errMsgPosition:"leftBottom",placeholder:"",type:"text",labelField:null,starBefore:false,valueChangedOnKeyUp:false,onClick:null,onChange:null,onBlur:null,onFocus:null,onKeyDown:null,onKeyUp:null,onKeyPress:null,onEnter:null,onMouseEnter:null,onMouseLeave:null,onCreate:null,onValidSuccess:null,onValidError:null,onValidWarn:null,onUploadSuccess:null,buttonOptions:null,triggers:null,excluded:false},button:function(){if(null!==this.options.buttonOptions){return this.$button}},component:function(){return this.textboxWrapper},focus:function(){if(this.options.disabled||this.options.isLabel||this.options.readonly||this.options.readonlyInput){return false}if("hidden"==this.element.attr("type")){return}var a=this;this.element.focus();return true},_create:function(){var a=this;if(a.options.hasTips){a.options.title=true}this._initElement();if(this.options.dataCustom){this.element.attr("data-custom",this.options.dataCustom)}this.setValue(this.element.val(),false);this.originalValue=this.getValue();this._bindEvents();if(null!==this.options.buttonOptions){this._outerButtons()
}a._trigger("onCreate",null,[])},_getButtonEl:function(){return $("<button type='button'></button>").addClass("coral-textbox-button")},reset:function(){this.setValue(this.originalValue)},_initSimple:function(){var a=this,b=a.element.uniqueId().attr("id")},_initUpload:function(){var a=this,b=a.element.uniqueId().attr("id");a.select=[];$(this.element).wrap('<span class="coral-file-default"></span>').before("<span class='coral-file'>请选择...</span>").before("<div id='"+b+"_upload'></div>").before("<div id='"+b+"_queue'></div>").hide();a.uploader=$("#"+b+"_upload");a.uploader.uploadify({swf:this.options.swfPath,uploader:a.options.uploadUrl,queueID:b+"_queue",height:"28",width:"800",buttonText:"浏览",onDialogOpen:function(){a.select=[]},onDialogClose:function(){},onSelect:function(c){a.select.push(c.name);a.textboxWrapper.find(".coral-file").html(a.select.join(","));a.textboxWrapper.find("object").attr("title",a.select.join(","))},onCancel:function(c){},onQueueComplete:function(c){setTimeout(function(){$("#"+b+"_queue").dialog("close");a.select=[]},3500)},onUploadSuccess:function(d,e,c){a._trigger("onUploadSuccess",null,[{file:d,data:e,response:c}])},auto:false});$("#"+b+"_queue").dialog({autoOpen:false,modal:false,resizable:false,onOpen:function(){a.uploader.uploadify("upload","*")}})},upload:function(a){var b=this;var c=b.element[0].id;if(this.select.length===0){return}$("#"+c+"_queue").dialog("open")},cancel:function(a){this.uploader.uploadify("cancel")},clear:function(a){this.select=[];this.textboxWrapper.find(".coral-file").html("请选择...");this.textboxWrapper.find("object").attr("title","请选择...");this.uploader.uploadify("cancel")},_getIcon:function(e){var a=[];if(typeof e==="undefined"||e==null||e==""){return[]}if(typeof e=="object"){for(var d in e){var f={};f[e[d].icon]=e[d].click;a.push(f)}}else{var c=$.trim(e).split(",");for(var d in c){var b=c[d].split(" ");var f={};f[b[0]]=b[1];a.push(f)}}return a},_triggerClick:function(b,e,f){var d=this,g=null,c=this.options;e=$.Event(e);
if(c.controllerName){var a=$.controller(c.controllerName);g=a[b];return g.apply(a,[e].concat(f))}else{g=$.coral.toFunction(b);return g.apply(d.element[0],[e].concat(f))}},_updateLabel:function(a){this.uiLabel.html(a)},_initElement:function(){var e=this,b=e.options;this.className="coral-textbox-default coral-validation-textbox tabbable "+this.element[0].className;this.compClass="coral-textbox";this.hiddenClass="";this.classBorder="";if("hidden"==this.element.attr("type")){this.compClass=this.compClass+" hide"}if(this.element[0].tagName=="TEXTAREA"){this.compClass="coral-textbox coral-textbox-textarea"}this.createInput();this.textboxWrapper=$(this.textboxWrapper);this.elementBorder=$(this.elementBorder);this.element=$(this.textboxInput);if(this.options.useHiddenInput){this.textboxHidden=$(this.textboxWrapper[0].lastChild)}else{this.textboxHidden=this.element}if(this.options.buttons.length>0){this._createButtonPanel()}if(b.labelField){this.uiLabel=$('<label class="coral-label">'+b.labelField+"</label>");this.elementBorder.before(this.uiLabel);this.textboxWrapper.addClass("coral-hasLabel")}if("file"==e.element.attr("type")){if("uploadify"==e.options.formatter){e._initUpload()}if("simple"==e.options.formatter||typeof e.options.formatter=="undefined"){e._initSimple()}}if(e.options.icons){var a=[],d=null;if((a=e._getIcon(e.options.icons)).length!=0){d=true}else{if((a=e._getIcon(e.options.texticons)).length!=0){d=false}}if(d!=null){this.uiDialogButtonPanel=$('<span class="coral-textbox-btn-icons coral-corner-right"></span>');e.elementBorder.append(this.uiDialogButtonPanel);for(var c in a){$.each(a[c],function(f,h){var g=$('<span class="coral-textbox-btn-ico icon"></span>');if(d){g.addClass(f)}else{g.addClass("coral-textbox-btn-textico").html(f)}g.bind("click"+e.eventNamespace,function(i){if(e.options.disabled){return}e._triggerClick(h,i,[{value:e.element.val()}])});e.uiDialogButtonPanel.append(g)})}this.rightPos=this.uiDialogButtonPanel.outerWidth()}}if(typeof this.element.attr("name")!="undefined"){this.options.name=this.element.attr("name")
}else{if(this.options.name){this.element.attr("name",this.options.name)}}if("TEXTAREA"===this.element[0].tagName){if($.trim(this.element.text())!==""){this.options.value=this.element.text()}else{if(this.options.value){this.element.text(this.options.value)}}}else{if($.trim(this.element.val())!==""){this.options.value=this.element.val()}else{if(this.options.value){this.element.val(this.options.value)}}}if(b.width){this.textboxWrapper.css("width",b.width)}if(b.height){this._setOption("height",b.height)}if(b.readonlyInput){this._setReadonlyInput()}if(b.readonly){this._setReadonly()}if(typeof b.isLabel=="boolean"&&b.isLabel){this._setReadonly();this.options.readonly=true;this.component().addClass("coral-isLabel");return}if(typeof b.disabled==="boolean"&&b.disabled){this._setOption("disabled",b.disabled)}if(this.options.showClose){this.clearIcon.css("right",this.rightPos?this.rightPos:0)}this.element.attr("placeholder",b.placeholder);if(b.placeholder&&""===this.element.val()){this._showPlaceholder()}this._updateTitle()},_setReadonlyInput:function(){if(typeof this.element.attr("readonly")!="undefined"){this.options.readonlyInput=this.element.prop("readonly")}else{if(this.options.readonlyInput){this.element.prop("readonly",this.options.readonlyInput)}}if(this.element.prop("readonly")){this.component().addClass("coral-readonlyInput")}},_setReadonly:function(){this.options.readonlyInput=true;this._setReadonlyInput();this.component().removeClass("coral-readonlyInput").addClass("coral-readonly");this.element.removeClass("tabbable")},_updateTitle:function(){var b=this,a=this.options;if(a.title==true){b.element.attr("title",b.element.val())}else{if(a.title==false){b.element.attr("title","")}else{b.element.attr("title",a.title)}}},_showPlaceholder:function(){if($.support.placeholder){return}var b=this,a=$("<span class='coral-textbox-placeholder-label'>"+b.options.placeholder+"</span>");$(b.element).after(a)},_hidePlaceholder:function(){if($.support.placeholder){return}var a=this;a.textboxWrapper.find(".coral-textbox-placeholder-label").remove()
},_bindEvents:function(){var c=this,b=this.options;var a;coral.eventsQueue.push({instance:this,args:[{"mouseenter.coral-textbox-border":function(d){if(typeof b.isLabel=="boolean"&&b.isLabel){return}if(typeof b.readonly=="boolean"&&b.readonly){return}c.component().addClass("coral-textbox-hover");this._trigger("onMouseEnter",d,[])},"mouseleave.coral-textbox-border":function(d){if(typeof b.isLabel=="boolean"&&b.isLabel){return}if(typeof b.readonly=="boolean"&&b.readonly){return}c.component().removeClass("coral-textbox-hover");this._trigger("onMouseLeave",d,[])},click:function(d){c._hidePlaceholder();this._trigger("onClick",d,[])},"click.coral-textbox-placeholder-label":function(d){c._hidePlaceholder();c.element.focus()},dblclick:function(d){this._trigger("onDblClick",d,[])},blur:function(d){this.component().removeClass("coral-state-focus");if(""===this.element.val()){this._showPlaceholder()}if(a){a=false;return}this._setValue(this.element.val(),true);this._trigger("onBlur",d,[])},focusin:function(d){if(b.isLabel||b.readonly||b.readonlyInput){this._trigger("onFocus",d,[{value:this.textboxHidden.val(),text:this.element.val()}]);return}this.component().addClass("coral-state-focus");this._trigger("onFocus",d,[{value:this.textboxHidden.val(),text:this.element.val()}])},keydown:function(d){if(b.isLabel||b.readonly||b.readonlyInput){return}$.validate.restrictInput(this.element,d);this._trigger("onKeyDown",d,[{value:this.textboxHidden.val(),text:this.element.val(),id:this.options.id}]);if(d.keyCode==13){this._setValue(this.element.val(),true);this._trigger("onEnter",d,[{value:this.textboxHidden.val(),text:this.element.val()}])}this._hidePlaceholder()},keypress:function(d){if(b.isLabel||b.readonly||b.readonlyInput){return}this._trigger("onKeyPress",d,[{value:this.textboxHidden.val(),text:this.element.val()}])},keyup:function(d){if(b.isLabel||b.readonly||b.readonlyInput){return}if(this.options.valueChangedOnKeyUp){this._setValue(this.element.val(),true,false)}$.validate.restrictInput(this.element,d);
this._trigger("onKeyUp",d,[{value:this.textboxHidden.val(),text:this.element.val(),id:this.options.id}])},"click.coral-input-clearIcon":function(d){d.preventDefault();this.setValue("",true);if(this.options.placeholder){this._showPlaceholder()}this._trigger("onCloseClick",event,[])},"mousedown.coral-input-clearIcon":function(d){d.stopPropagation();a=true}}]});if(!coral.eventsTimer){coral.eventsTimer=setTimeout(function(){coral.eventsParser()},50)}},_setOption:function(d,f){var e=this;if(d==="id"||d==="name"||d==="type"){return}if(d==="height"){if(f){this.component().outerHeight(f);this.textboxWrapper.find(".coral-textbox-btn-textico").css({"line-height":(f-6)+"px",height:f+"px"})}}if(d==="width"){if(f){this.component().outerWidth(f)}}this._super(d,f);if(d==="placeholder"){this.element.attr("placeholder",this.options.placeholder);if(this.getValue()===""){this._showPlaceholder()}}if(d=="texticons"){var b=e._getIcon(e.options.texticons);var a=$('<span class="coral-textbox-btn-icons coral-corner-right"></span>');e.elementBorder.find(".coral-textbox-btn-icons").replaceWith(a);for(var c in b){$.each(b[c],function(g,i){var h=$('<span class="coral-textbox-btn-ico icon"></span>').addClass("coral-textbox-btn-textico").html(g);h.bind("click"+e.eventNamespace,function(j){if(e.options.disabled){return}e._triggerClick(i,j,[{value:e.element.val()}])});a.append(h)})}}if(d==="value"){e._updateTitle();e.setValue(f,false)}if(d==="isLabel"){if(typeof f=="boolean"&&f){this._setReadonly();this.component().removeClass("coral-readonly").addClass("coral-isLabel")}else{if(typeof f=="boolean"&&!f){this.element.prop("readonly",false);this.options.readonly=false;this.options.isLabel=false;this.options.readonlyInput=false;this.element.addClass("tabbable");this.component().removeClass("coral-isLabel coral-readonly")}}}if(d==="readonly"){if(typeof f=="boolean"&&f){this._setReadonly();this.component().removeClass("coral-isLabel").addClass("coral-readonly")}else{if(typeof f=="boolean"&&!f){this.element.prop("readonly",false);
this.options.readonly=false;this.options.readonlyInput=false;this.element.prop("readonly",false);this.element.addClass("tabbable");this.component().removeClass("coral-isLabel coral-readonly")}}}if(d==="readonlyInput"){if(typeof f=="boolean"&&f){this._setReadonlyInput();this.component().removeClass("coral-isLabel").addClass("coral-readonlyInput")}else{if(typeof f=="boolean"&&!f){this.element.prop("readonly",false);this.options.readonlyInput=false;this.component().removeClass("coral-isLabel coral-readonlyInput")}}}if(d==="disabled"){if(f){this.element.prop("disabled",true)}else{this.element.prop("disabled",false)}}if(d==="labelField"){e._updateLabel(f)}if(d==="title"){e._updateTitle()}if(d==="hasTips"){e._updateTitle()}},_destroy:function(){this.textboxWrapper.replaceWith(this.element);this.element.val("");this.element.removeAttr("value");this.element.removeClass("coral-textbox-default").removeClass("coral-validation-textbox").removeClass("coral-textbox-hover").removeClass("coral-textbox-textarea").removeClass("coral-textbox-input").removeAttr("placeholder").removeAttr("title").removeAttr("readonly").removeAttr("disabled")},disable:function(){this._setOption("disabled",true)},enable:function(){this._setOption("disabled",false)},getHtml:function(){return this.element.text()},setHtml:function(){this.element.text(value);this._updateTitle()},isRegexSpecialChar:function(d){var c=this.options.regSpecialChars.length;var b;for(var a=0;a<c;a++){b=this.options.regSpecialChars[a];if(d==b){return true}}return false},keyToRegex:function(a){if(this.isRegexSpecialChar(a)){a="\\"+a}var b=new RegExp(a,"g");return b},encode:function(e){var d=this.options.specialCharsMap,c=this;if(e==null||e==""){return e}for(var a in d){var b=new RegExp(d[a],"g");e=e.replace(b,a)}return e},decode:function(e){var d=this.options.specialCharsMap,c=this;if(e==null||e==""){return e}for(var a in d){var b=c.keyToRegex(a);e=e.replace(b,d[a])}return e},getValue:function(){var a=this.textboxHidden.val();if(this.options.autoDecode){a=this.decode(a)
}return a},getValidateValue:function(){return this.getText()},getText:function(){var a="";if(this.component().hasClass("coral-state-focus")){a=this.element.val()}else{a=this.textboxHidden.val()}return a},_setValue:function(e,b,d){e=e===null||typeof(e)==="undefined"?"":e;var f=e,c;d=d!==false?true:false;var a=$.coral.toFunction(this.options.formatterText);if($.isFunction(a)){f=a.apply(this.options.element,[{value:e}])}if(d){this.setText(f)}this.textboxHidden.val(e);this.options.value=e;if(b&&this.previous!=e){this._trigger("onChange",null,[{value:e,text:f}])}this.previous=e;if(e!==""){this._hidePlaceholder()}},setValue:function(c,a,b){c=c===null||typeof(c)==="undefined"?"":c;if(this.options.autoDecode){c=this.encode(c)}this._setValue(c,a,b)},setText:function(a){if(this.element.is("textarea")){this.element.val(a);this.element.text(a)}else{this.element.val(a)}this._updateTitle()},formValue:function(){var b={},a=this.element.attr("name");if(!a){return null}b[a]=this.getValue();return b}});