Toolbox/static/plugins/jquery.textbox.js

557 lines
15 KiB
JavaScript
Raw Normal View History

2023-05-03 09:06:13 +02:00
/**
* 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($){
var _1=0;
function _2(_3){
$(_3).addClass("textbox-f").hide();
var _4=$("<span class=\"textbox\">"+"<input class=\"textbox-text\" autocomplete=\"off\">"+"<input type=\"hidden\" class=\"textbox-value\">"+"</span>").insertAfter(_3);
var _5=$(_3).attr("name");
if(_5){
_4.find("input.textbox-value").attr("name",_5);
$(_3).removeAttr("name").attr("textboxName",_5);
}
return _4;
};
function _6(_7){
var _8=$.data(_7,"textbox");
var _9=_8.options;
var tb=_8.textbox;
var _a="_easyui_textbox_input"+(++_1);
tb.addClass(_9.cls);
tb.find(".textbox-text").remove();
if(_9.multiline){
$("<textarea id=\""+_a+"\" class=\"textbox-text\" autocomplete=\"off\"></textarea>").prependTo(tb);
}else{
$("<input id=\""+_a+"\" type=\""+_9.type+"\" class=\"textbox-text\" autocomplete=\"off\">").prependTo(tb);
}
$("#"+_a).attr("tabindex",$(_7).attr("tabindex")||"").css("text-align",_7.style.textAlign||"");
tb.find(".textbox-addon").remove();
var bb=_9.icons?$.extend(true,[],_9.icons):[];
if(_9.iconCls){
bb.push({iconCls:_9.iconCls,disabled:true});
}
if(bb.length){
var bc=$("<span class=\"textbox-addon\"></span>").prependTo(tb);
bc.addClass("textbox-addon-"+_9.iconAlign);
for(var i=0;i<bb.length;i++){
bc.append("<a href=\"javascript:;\" class=\"textbox-icon "+bb[i].iconCls+"\" icon-index=\""+i+"\" tabindex=\"-1\"></a>");
}
}
tb.find(".textbox-button").remove();
if(_9.buttonText||_9.buttonIcon){
var _b=$("<a href=\"javascript:;\" class=\"textbox-button\"></a>").prependTo(tb);
_b.addClass("textbox-button-"+_9.buttonAlign).linkbutton({text:_9.buttonText,iconCls:_9.buttonIcon,onClick:function(){
var t=$(this).parent().prev();
t.textbox("options").onClickButton.call(t[0]);
}});
}
if(_9.label){
if(typeof _9.label=="object"){
_8.label=$(_9.label);
_8.label.attr("for",_a);
}else{
$(_8.label).remove();
_8.label=$("<label class=\"textbox-label\"></label>").html(_9.label);
_8.label.css("textAlign",_9.labelAlign).attr("for",_a);
if(_9.labelPosition=="after"){
_8.label.insertAfter(tb);
}else{
_8.label.insertBefore(_7);
}
_8.label.removeClass("textbox-label-left textbox-label-right textbox-label-top");
_8.label.addClass("textbox-label-"+_9.labelPosition);
}
}else{
$(_8.label).remove();
}
_c(_7);
_d(_7,_9.disabled);
_e(_7,_9.readonly);
};
function _f(_10){
var tb=$.data(_10,"textbox").textbox;
tb.find(".textbox-text").validatebox("destroy");
tb.remove();
$(_10).remove();
};
function _11(_12,_13){
var _14=$.data(_12,"textbox");
var _15=_14.options;
var tb=_14.textbox;
var _16=tb.parent();
if(_13){
if(typeof _13=="object"){
$.extend(_15,_13);
}else{
_15.width=_13;
}
}
if(isNaN(parseInt(_15.width))){
var c=$(_12).clone();
c.css("visibility","hidden");
c.insertAfter(_12);
_15.width=c.outerWidth();
c.remove();
}
var _17=tb.is(":visible");
if(!_17){
tb.appendTo("body");
}
var _18=tb.find(".textbox-text");
var btn=tb.find(".textbox-button");
var _19=tb.find(".textbox-addon");
var _1a=_19.find(".textbox-icon");
if(_15.height=="auto"){
_18.css({margin:"",paddingTop:"",paddingBottom:"",height:"",lineHeight:""});
}
tb._size(_15,_16);
if(_15.label&&_15.labelPosition){
if(_15.labelPosition=="top"){
_14.label._size({width:_15.labelWidth=="auto"?tb.outerWidth():_15.labelWidth},tb);
if(_15.height!="auto"){
tb._size("height",tb.outerHeight()-_14.label.outerHeight());
}
}else{
_14.label._size({width:_15.labelWidth,height:tb.outerHeight()},tb);
if(!_15.multiline){
_14.label.css("lineHeight",_14.label.height()+"px");
}
tb._size("width",tb.outerWidth()-_14.label.outerWidth());
}
}
if(_15.buttonAlign=="left"||_15.buttonAlign=="right"){
btn.linkbutton("resize",{height:tb.height()});
}else{
btn.linkbutton("resize",{width:"100%"});
}
var _1b=tb.width()-_1a.length*_15.iconWidth-_1c("left")-_1c("right");
var _1d=_15.height=="auto"?_18.outerHeight():(tb.height()-_1c("top")-_1c("bottom"));
_19.css(_15.iconAlign,_1c(_15.iconAlign)+"px");
_19.css("top",_1c("top")+"px");
_1a.css({width:_15.iconWidth+"px",height:_1d+"px"});
_18.css({paddingLeft:(_12.style.paddingLeft||""),paddingRight:(_12.style.paddingRight||""),marginLeft:_1e("left"),marginRight:_1e("right"),marginTop:_1c("top"),marginBottom:_1c("bottom")});
if(_15.multiline){
_18.css({paddingTop:(_12.style.paddingTop||""),paddingBottom:(_12.style.paddingBottom||"")});
_18._outerHeight(_1d);
}else{
_18.css({paddingTop:0,paddingBottom:0,height:_1d+"px",lineHeight:_1d+"px"});
}
_18._outerWidth(_1b);
_15.onResizing.call(_12,_15.width,_15.height);
if(!_17){
tb.insertAfter(_12);
}
_15.onResize.call(_12,_15.width,_15.height);
function _1e(_1f){
return (_15.iconAlign==_1f?_19._outerWidth():0)+_1c(_1f);
};
function _1c(_20){
var w=0;
btn.filter(".textbox-button-"+_20).each(function(){
if(_20=="left"||_20=="right"){
w+=$(this).outerWidth();
}else{
w+=$(this).outerHeight();
}
});
return w;
};
};
function _c(_21){
var _22=$(_21).textbox("options");
var _23=$(_21).textbox("textbox");
_23.validatebox($.extend({},_22,{deltaX:function(_24){
return $(_21).textbox("getTipX",_24);
},deltaY:function(_25){
return $(_21).textbox("getTipY",_25);
},onBeforeValidate:function(){
_22.onBeforeValidate.call(_21);
var box=$(this);
if(!box.is(":focus")){
if(box.val()!==_22.value){
_22.oldInputValue=box.val();
box.val(_22.value);
}
}
},onValidate:function(_26){
var box=$(this);
if(_22.oldInputValue!=undefined){
box.val(_22.oldInputValue);
_22.oldInputValue=undefined;
}
var tb=box.parent();
if(_26){
tb.removeClass("textbox-invalid");
}else{
tb.addClass("textbox-invalid");
}
_22.onValidate.call(_21,_26);
}}));
};
function _27(_28){
var _29=$.data(_28,"textbox");
var _2a=_29.options;
var tb=_29.textbox;
var _2b=tb.find(".textbox-text");
_2b.attr("placeholder",_2a.prompt);
_2b.unbind(".textbox");
$(_29.label).unbind(".textbox");
if(!_2a.disabled&&!_2a.readonly){
if(_29.label){
$(_29.label).bind("click.textbox",function(e){
if(!_2a.hasFocusMe){
_2b.focus();
$(_28).textbox("setSelectionRange",{start:0,end:_2b.val().length});
}
});
}
_2b.bind("blur.textbox",function(e){
if(!tb.hasClass("textbox-focused")){
return;
}
_2a.value=$(this).val();
if(_2a.value==""){
$(this).val(_2a.prompt).addClass("textbox-prompt");
}else{
$(this).removeClass("textbox-prompt");
}
tb.removeClass("textbox-focused");
}).bind("focus.textbox",function(e){
_2a.hasFocusMe=true;
if(tb.hasClass("textbox-focused")){
return;
}
if($(this).val()!=_2a.value){
$(this).val(_2a.value);
}
$(this).removeClass("textbox-prompt");
tb.addClass("textbox-focused");
});
for(var _2c in _2a.inputEvents){
_2b.bind(_2c+".textbox",{target:_28},_2a.inputEvents[_2c]);
}
}
var _2d=tb.find(".textbox-addon");
_2d.unbind().bind("click",{target:_28},function(e){
var _2e=$(e.target).closest("a.textbox-icon:not(.textbox-icon-disabled)");
if(_2e.length){
var _2f=parseInt(_2e.attr("icon-index"));
var _30=_2a.icons[_2f];
if(_30&&_30.handler){
_30.handler.call(_2e[0],e);
}
_2a.onClickIcon.call(_28,_2f);
}
});
_2d.find(".textbox-icon").each(function(_31){
var _32=_2a.icons[_31];
var _33=$(this);
if(!_32||_32.disabled||_2a.disabled||_2a.readonly){
_33.addClass("textbox-icon-disabled");
}else{
_33.removeClass("textbox-icon-disabled");
}
});
var btn=tb.find(".textbox-button");
btn.linkbutton((_2a.disabled||_2a.readonly)?"disable":"enable");
tb.unbind(".textbox").bind("_resize.textbox",function(e,_34){
if($(this).hasClass("easyui-fluid")||_34){
_11(_28);
}
return false;
});
};
function _d(_35,_36){
var _37=$.data(_35,"textbox");
var _38=_37.options;
var tb=_37.textbox;
var _39=tb.find(".textbox-text");
var ss=$(_35).add(tb.find(".textbox-value"));
_38.disabled=_36;
if(_38.disabled){
_39.blur();
_39.validatebox("disable");
tb.addClass("textbox-disabled");
ss.attr("disabled","disabled");
$(_37.label).addClass("textbox-label-disabled");
}else{
_39.validatebox("enable");
tb.removeClass("textbox-disabled");
ss.removeAttr("disabled");
$(_37.label).removeClass("textbox-label-disabled");
}
};
function _e(_3a,_3b){
var _3c=$.data(_3a,"textbox");
var _3d=_3c.options;
var tb=_3c.textbox;
var _3e=tb.find(".textbox-text");
_3d.readonly=_3b==undefined?true:_3b;
if(_3d.readonly){
_3e.triggerHandler("blur.textbox");
}
_3e.validatebox("readonly",_3d.readonly);
tb.removeClass("textbox-readonly").addClass(_3d.readonly?"textbox-readonly":"");
};
$.fn.textbox=function(_3f,_40){
if(typeof _3f=="string"){
var _41=$.fn.textbox.methods[_3f];
if(_41){
return _41(this,_40);
}else{
return this.each(function(){
var _42=$(this).textbox("textbox");
_42.validatebox(_3f,_40);
});
}
}
_3f=_3f||{};
return this.each(function(){
var _43=$.data(this,"textbox");
if(_43){
$.extend(_43.options,_3f);
if(_3f.value!=undefined){
_43.options.originalValue=_3f.value;
}
}else{
_43=$.data(this,"textbox",{options:$.extend({},$.fn.textbox.defaults,$.fn.textbox.parseOptions(this),_3f),textbox:_2(this)});
_43.options.originalValue=_43.options.value;
}
_6(this);
_27(this);
if(_43.options.doSize){
_11(this);
}
var _44=_43.options.value;
_43.options.value="";
$(this).textbox("initValue",_44);
});
};
$.fn.textbox.methods={options:function(jq){
return $.data(jq[0],"textbox").options;
},cloneFrom:function(jq,_45){
return jq.each(function(){
var t=$(this);
if(t.data("textbox")){
return;
}
if(!$(_45).data("textbox")){
$(_45).textbox();
}
var _46=$.extend(true,{},$(_45).textbox("options"));
var _47=t.attr("name")||"";
t.addClass("textbox-f").hide();
t.removeAttr("name").attr("textboxName",_47);
var _48=$(_45).next().clone().insertAfter(t);
var _49="_easyui_textbox_input"+(++_1);
_48.find(".textbox-value").attr("name",_47);
_48.find(".textbox-text").attr("id",_49);
var _4a=$($(_45).textbox("label")).clone();
if(_4a.length){
_4a.attr("for",_49);
if(_46.labelPosition=="after"){
_4a.insertAfter(t.next());
}else{
_4a.insertBefore(t);
}
}
$.data(this,"textbox",{options:_46,textbox:_48,label:(_4a.length?_4a:undefined)});
var _4b=$(_45).textbox("button");
if(_4b.length){
t.textbox("button").linkbutton($.extend(true,{},_4b.linkbutton("options")));
}
_27(this);
_c(this);
});
},textbox:function(jq){
return $.data(jq[0],"textbox").textbox.find(".textbox-text");
},button:function(jq){
return $.data(jq[0],"textbox").textbox.find(".textbox-button");
},label:function(jq){
return $.data(jq[0],"textbox").label;
},destroy:function(jq){
return jq.each(function(){
_f(this);
});
},resize:function(jq,_4c){
return jq.each(function(){
_11(this,_4c);
});
},disable:function(jq){
return jq.each(function(){
_d(this,true);
_27(this);
});
},enable:function(jq){
return jq.each(function(){
_d(this,false);
_27(this);
});
},readonly:function(jq,_4d){
return jq.each(function(){
_e(this,_4d);
_27(this);
});
},isValid:function(jq){
return jq.textbox("textbox").validatebox("isValid");
},clear:function(jq){
return jq.each(function(){
$(this).textbox("setValue","");
});
},setText:function(jq,_4e){
return jq.each(function(){
var _4f=$(this).textbox("options");
var _50=$(this).textbox("textbox");
_4e=_4e==undefined?"":String(_4e);
if($(this).textbox("getText")!=_4e){
_50.val(_4e);
}
_4f.value=_4e;
if(!_50.is(":focus")){
if(_4e){
_50.removeClass("textbox-prompt");
}else{
_50.val(_4f.prompt).addClass("textbox-prompt");
}
}
$(this).textbox("validate");
});
},initValue:function(jq,_51){
return jq.each(function(){
var _52=$.data(this,"textbox");
$(this).textbox("setText",_51);
_52.textbox.find(".textbox-value").val(_51);
$(this).val(_51);
});
},setValue:function(jq,_53){
return jq.each(function(){
var _54=$.data(this,"textbox").options;
var _55=$(this).textbox("getValue");
$(this).textbox("initValue",_53);
if(_55!=_53){
_54.onChange.call(this,_53,_55);
$(this).closest("form").trigger("_change",[this]);
}
});
},getText:function(jq){
var _56=jq.textbox("textbox");
if(_56.is(":focus")){
return _56.val();
}else{
return jq.textbox("options").value;
}
},getValue:function(jq){
return jq.data("textbox").textbox.find(".textbox-value").val();
},reset:function(jq){
return jq.each(function(){
var _57=$(this).textbox("options");
$(this).textbox("setValue",_57.originalValue);
});
},getIcon:function(jq,_58){
return jq.data("textbox").textbox.find(".textbox-icon:eq("+_58+")");
},getTipX:function(jq,_59){
var _5a=jq.data("textbox");
var _5b=_5a.options;
var tb=_5a.textbox;
var _5c=tb.find(".textbox-text");
var _59=_59||_5b.tipPosition;
var p1=tb.offset();
var p2=_5c.offset();
var w1=tb.outerWidth();
var w2=_5c.outerWidth();
if(_59=="right"){
return w1-w2-p2.left+p1.left;
}else{
if(_59=="left"){
return p1.left-p2.left;
}else{
return (w1-w2-p2.left+p1.left)/2-(p2.left-p1.left)/2;
}
}
},getTipY:function(jq,_5d){
var _5e=jq.data("textbox");
var _5f=_5e.options;
var tb=_5e.textbox;
var _60=tb.find(".textbox-text");
var _5d=_5d||_5f.tipPosition;
var p1=tb.offset();
var p2=_60.offset();
var h1=tb.outerHeight();
var h2=_60.outerHeight();
if(_5d=="left"||_5d=="right"){
return (h1-h2-p2.top+p1.top)/2-(p2.top-p1.top)/2;
}else{
if(_5d=="bottom"){
return (h1-h2-p2.top+p1.top);
}else{
return (p1.top-p2.top);
}
}
},getSelectionStart:function(jq){
return jq.textbox("getSelectionRange").start;
},getSelectionRange:function(jq){
var _61=jq.textbox("textbox")[0];
var _62=0;
var end=0;
if(typeof _61.selectionStart=="number"){
_62=_61.selectionStart;
end=_61.selectionEnd;
}else{
if(_61.createTextRange){
var s=document.selection.createRange();
var _63=_61.createTextRange();
_63.setEndPoint("EndToStart",s);
_62=_63.text.length;
end=_62+s.text.length;
}
}
return {start:_62,end:end};
},setSelectionRange:function(jq,_64){
return jq.each(function(){
var _65=$(this).textbox("textbox")[0];
var _66=_64.start;
var end=_64.end;
if(_65.setSelectionRange){
_65.setSelectionRange(_66,end);
}else{
if(_65.createTextRange){
var _67=_65.createTextRange();
_67.collapse();
_67.moveEnd("character",end);
_67.moveStart("character",_66);
_67.select();
}
}
});
}};
$.fn.textbox.parseOptions=function(_68){
var t=$(_68);
return $.extend({},$.fn.validatebox.parseOptions(_68),$.parser.parseOptions(_68,["prompt","iconCls","iconAlign","buttonText","buttonIcon","buttonAlign","label","labelPosition","labelAlign",{multiline:"boolean",iconWidth:"number",labelWidth:"number"}]),{value:(t.val()||undefined),type:(t.attr("type")?t.attr("type"):undefined)});
};
$.fn.textbox.defaults=$.extend({},$.fn.validatebox.defaults,{doSize:true,width:"auto",height:"auto",cls:null,prompt:"",value:"",type:"text",multiline:false,icons:[],iconCls:null,iconAlign:"right",iconWidth:18,buttonText:"",buttonIcon:null,buttonAlign:"right",label:null,labelWidth:"auto",labelPosition:"before",labelAlign:"left",inputEvents:{blur:function(e){
var t=$(e.data.target);
var _69=t.textbox("options");
if(t.textbox("getValue")!=_69.value){
t.textbox("setValue",_69.value);
}
},keydown:function(e){
if(e.keyCode==13){
var t=$(e.data.target);
t.textbox("setValue",t.textbox("getText"));
}
}},onChange:function(_6a,_6b){
},onResizing:function(_6c,_6d){
},onResize:function(_6e,_6f){
},onClickButton:function(){
},onClickIcon:function(_70){
}});
})(jQuery);