jquery.textbox.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. /**
  2. * jQuery EasyUI 1.4.4
  3. *
  4. * Copyright (c) 2009-2015 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. *
  9. */
  10. (function($){
  11. function _1(_2){
  12. $(_2).addClass("textbox-f").hide();
  13. var _3=$("<span class=\"textbox\">"+"<input class=\"textbox-text\" autocomplete=\"off\">"+"<input type=\"hidden\" class=\"textbox-value\">"+"</span>").insertAfter(_2);
  14. var _4=$(_2).attr("name");
  15. if(_4){
  16. _3.find("input.textbox-value").attr("name",_4);
  17. $(_2).removeAttr("name").attr("textboxName",_4);
  18. }
  19. return _3;
  20. };
  21. function _5(_6){
  22. var _7=$.data(_6,"textbox");
  23. var _8=_7.options;
  24. var tb=_7.textbox;
  25. tb.find(".textbox-text").remove();
  26. if(_8.multiline){
  27. $("<textarea class=\"textbox-text\" autocomplete=\"off\"></textarea>").prependTo(tb);
  28. }else{
  29. $("<input type=\""+_8.type+"\" class=\"textbox-text\" autocomplete=\"off\">").prependTo(tb);
  30. }
  31. tb.find(".textbox-addon").remove();
  32. var bb=_8.icons?$.extend(true,[],_8.icons):[];
  33. if(_8.iconCls){
  34. bb.push({iconCls:_8.iconCls,disabled:true});
  35. }
  36. if(bb.length){
  37. var bc=$("<span class=\"textbox-addon\"></span>").prependTo(tb);
  38. bc.addClass("textbox-addon-"+_8.iconAlign);
  39. for(var i=0;i<bb.length;i++){
  40. bc.append("<a href=\"javascript:void(0)\" class=\"textbox-icon "+bb[i].iconCls+"\" icon-index=\""+i+"\" tabindex=\"-1\"></a>");
  41. }
  42. }
  43. tb.find(".textbox-button").remove();
  44. if(_8.buttonText||_8.buttonIcon){
  45. var _9=$("<a href=\"javascript:void(0)\" class=\"textbox-button\"></a>").prependTo(tb);
  46. _9.addClass("textbox-button-"+_8.buttonAlign).linkbutton({text:_8.buttonText,iconCls:_8.buttonIcon});
  47. }
  48. _a(_6,_8.disabled);
  49. _b(_6,_8.readonly);
  50. };
  51. function _c(_d){
  52. var tb=$.data(_d,"textbox").textbox;
  53. tb.find(".textbox-text").validatebox("destroy");
  54. tb.remove();
  55. $(_d).remove();
  56. };
  57. function _e(_f,_10){
  58. var _11=$.data(_f,"textbox");
  59. var _12=_11.options;
  60. var tb=_11.textbox;
  61. var _13=tb.parent();
  62. if(_10){
  63. _12.width=_10;
  64. }
  65. if(isNaN(parseInt(_12.width))){
  66. var c=$(_f).clone();
  67. c.css("visibility","hidden");
  68. c.insertAfter(_f);
  69. _12.width=c.outerWidth();
  70. c.remove();
  71. }
  72. var _14=tb.is(":visible");
  73. if(!_14){
  74. tb.appendTo("body");
  75. }
  76. var _15=tb.find(".textbox-text");
  77. var btn=tb.find(".textbox-button");
  78. var _16=tb.find(".textbox-addon");
  79. var _17=_16.find(".textbox-icon");
  80. tb._size(_12,_13);
  81. btn.linkbutton("resize",{height:tb.height()});
  82. btn.css({left:(_12.buttonAlign=="left"?0:""),right:(_12.buttonAlign=="right"?0:"")});
  83. _16.css({left:(_12.iconAlign=="left"?(_12.buttonAlign=="left"?btn._outerWidth():0):""),right:(_12.iconAlign=="right"?(_12.buttonAlign=="right"?btn._outerWidth():0):"")});
  84. _17.css({width:_12.iconWidth+"px",height:tb.height()+"px"});
  85. _15.css({paddingLeft:(_f.style.paddingLeft||""),paddingRight:(_f.style.paddingRight||""),marginLeft:_18("left"),marginRight:_18("right")});
  86. if(_12.multiline){
  87. _15.css({paddingTop:(_f.style.paddingTop||""),paddingBottom:(_f.style.paddingBottom||"")});
  88. _15._outerHeight(tb.height());
  89. }else{
  90. var _19=Math.floor((tb.height()-_15.height())/2);
  91. _15.css({paddingTop:_19+"px",paddingBottom:_19+"px"});
  92. }
  93. _15._outerWidth(tb.width()-_17.length*_12.iconWidth-btn._outerWidth());
  94. if(!_14){
  95. tb.insertAfter(_f);
  96. }
  97. _12.onResize.call(_f,_12.width,_12.height);
  98. function _18(_1a){
  99. return (_12.iconAlign==_1a?_16._outerWidth():0)+(_12.buttonAlign==_1a?btn._outerWidth():0);
  100. };
  101. };
  102. function _1b(_1c){
  103. var _1d=$(_1c).textbox("options");
  104. var _1e=$(_1c).textbox("textbox");
  105. _1e.validatebox($.extend({},_1d,{deltaX:$(_1c).textbox("getTipX"),onBeforeValidate:function(){
  106. var box=$(this);
  107. if(!box.is(":focus")){
  108. _1d.oldInputValue=box.val();
  109. box.val(_1d.value);
  110. }
  111. },onValidate:function(_1f){
  112. var box=$(this);
  113. if(_1d.oldInputValue!=undefined){
  114. box.val(_1d.oldInputValue);
  115. _1d.oldInputValue=undefined;
  116. }
  117. var tb=box.parent();
  118. if(_1f){
  119. tb.removeClass("textbox-invalid");
  120. }else{
  121. tb.addClass("textbox-invalid");
  122. }
  123. }}));
  124. };
  125. function _20(_21){
  126. var _22=$.data(_21,"textbox");
  127. var _23=_22.options;
  128. var tb=_22.textbox;
  129. var _24=tb.find(".textbox-text");
  130. _24.attr("placeholder",_23.prompt);
  131. _24.unbind(".textbox");
  132. if(!_23.disabled&&!_23.readonly){
  133. _24.bind("blur.textbox",function(e){
  134. if(!tb.hasClass("textbox-focused")){
  135. return;
  136. }
  137. _23.value=$(this).val();
  138. if(_23.value==""){
  139. $(this).val(_23.prompt).addClass("textbox-prompt");
  140. }else{
  141. $(this).removeClass("textbox-prompt");
  142. }
  143. tb.removeClass("textbox-focused");
  144. }).bind("focus.textbox",function(e){
  145. if(tb.hasClass("textbox-focused")){
  146. return;
  147. }
  148. if($(this).val()!=_23.value){
  149. $(this).val(_23.value);
  150. }
  151. $(this).removeClass("textbox-prompt");
  152. tb.addClass("textbox-focused");
  153. });
  154. for(var _25 in _23.inputEvents){
  155. _24.bind(_25+".textbox",{target:_21},_23.inputEvents[_25]);
  156. }
  157. }
  158. var _26=tb.find(".textbox-addon");
  159. _26.unbind().bind("click",{target:_21},function(e){
  160. var _27=$(e.target).closest("a.textbox-icon:not(.textbox-icon-disabled)");
  161. if(_27.length){
  162. var _28=parseInt(_27.attr("icon-index"));
  163. var _29=_23.icons[_28];
  164. if(_29&&_29.handler){
  165. _29.handler.call(_27[0],e);
  166. _23.onClickIcon.call(_21,_28);
  167. }
  168. }
  169. });
  170. _26.find(".textbox-icon").each(function(_2a){
  171. var _2b=_23.icons[_2a];
  172. var _2c=$(this);
  173. if(!_2b||_2b.disabled||_23.disabled||_23.readonly){
  174. _2c.addClass("textbox-icon-disabled");
  175. }else{
  176. _2c.removeClass("textbox-icon-disabled");
  177. }
  178. });
  179. var btn=tb.find(".textbox-button");
  180. btn.unbind(".textbox").bind("click.textbox",function(){
  181. if(!btn.linkbutton("options").disabled){
  182. _23.onClickButton.call(_21);
  183. }
  184. });
  185. btn.linkbutton((_23.disabled||_23.readonly)?"disable":"enable");
  186. tb.unbind(".textbox").bind("_resize.textbox",function(e,_2d){
  187. if($(this).hasClass("easyui-fluid")||_2d){
  188. _e(_21);
  189. }
  190. return false;
  191. });
  192. };
  193. function _a(_2e,_2f){
  194. var _30=$.data(_2e,"textbox");
  195. var _31=_30.options;
  196. var tb=_30.textbox;
  197. if(_2f){
  198. _31.disabled=true;
  199. $(_2e).attr("disabled","disabled");
  200. tb.addClass("textbox-disabled");
  201. tb.find(".textbox-text,.textbox-value").attr("disabled","disabled");
  202. }else{
  203. _31.disabled=false;
  204. tb.removeClass("textbox-disabled");
  205. $(_2e).removeAttr("disabled");
  206. tb.find(".textbox-text,.textbox-value").removeAttr("disabled");
  207. }
  208. };
  209. function _b(_32,_33){
  210. var _34=$.data(_32,"textbox");
  211. var _35=_34.options;
  212. _35.readonly=_33==undefined?true:_33;
  213. _34.textbox.removeClass("textbox-readonly").addClass(_35.readonly?"textbox-readonly":"");
  214. var _36=_34.textbox.find(".textbox-text");
  215. _36.removeAttr("readonly");
  216. if(_35.readonly||!_35.editable){
  217. _36.attr("readonly","readonly");
  218. }
  219. };
  220. $.fn.textbox=function(_37,_38){
  221. if(typeof _37=="string"){
  222. var _39=$.fn.textbox.methods[_37];
  223. if(_39){
  224. return _39(this,_38);
  225. }else{
  226. return this.each(function(){
  227. var _3a=$(this).textbox("textbox");
  228. _3a.validatebox(_37,_38);
  229. });
  230. }
  231. }
  232. _37=_37||{};
  233. return this.each(function(){
  234. var _3b=$.data(this,"textbox");
  235. if(_3b){
  236. $.extend(_3b.options,_37);
  237. if(_37.value!=undefined){
  238. _3b.options.originalValue=_37.value;
  239. }
  240. }else{
  241. _3b=$.data(this,"textbox",{options:$.extend({},$.fn.textbox.defaults,$.fn.textbox.parseOptions(this),_37),textbox:_1(this)});
  242. _3b.options.originalValue=_3b.options.value;
  243. }
  244. _5(this);
  245. _20(this);
  246. _e(this);
  247. _1b(this);
  248. $(this).textbox("initValue",_3b.options.value);
  249. });
  250. };
  251. $.fn.textbox.methods={options:function(jq){
  252. return $.data(jq[0],"textbox").options;
  253. },cloneFrom:function(jq,_3c){
  254. return jq.each(function(){
  255. var t=$(this);
  256. if(t.data("textbox")){
  257. return;
  258. }
  259. if(!$(_3c).data("textbox")){
  260. $(_3c).textbox();
  261. }
  262. var _3d=t.attr("name")||"";
  263. t.addClass("textbox-f").hide();
  264. t.removeAttr("name").attr("textboxName",_3d);
  265. var _3e=$(_3c).next().clone().insertAfter(t);
  266. _3e.find("input.textbox-value").attr("name",_3d);
  267. $.data(this,"textbox",{options:$.extend(true,{},$(_3c).textbox("options")),textbox:_3e});
  268. var _3f=$(_3c).textbox("button");
  269. if(_3f.length){
  270. t.textbox("button").linkbutton($.extend(true,{},_3f.linkbutton("options")));
  271. }
  272. _20(this);
  273. _1b(this);
  274. });
  275. },textbox:function(jq){
  276. return $.data(jq[0],"textbox").textbox.find(".textbox-text");
  277. },button:function(jq){
  278. return $.data(jq[0],"textbox").textbox.find(".textbox-button");
  279. },destroy:function(jq){
  280. return jq.each(function(){
  281. _c(this);
  282. });
  283. },resize:function(jq,_40){
  284. return jq.each(function(){
  285. _e(this,_40);
  286. });
  287. },disable:function(jq){
  288. return jq.each(function(){
  289. _a(this,true);
  290. _20(this);
  291. });
  292. },enable:function(jq){
  293. return jq.each(function(){
  294. _a(this,false);
  295. _20(this);
  296. });
  297. },readonly:function(jq,_41){
  298. return jq.each(function(){
  299. _b(this,_41);
  300. _20(this);
  301. });
  302. },isValid:function(jq){
  303. return jq.textbox("textbox").validatebox("isValid");
  304. },clear:function(jq){
  305. return jq.each(function(){
  306. $(this).textbox("setValue","");
  307. });
  308. },setText:function(jq,_42){
  309. return jq.each(function(){
  310. var _43=$(this).textbox("options");
  311. var _44=$(this).textbox("textbox");
  312. _42=_42==undefined?"":String(_42);
  313. if($(this).textbox("getText")!=_42){
  314. _44.val(_42);
  315. }
  316. _43.value=_42;
  317. if(!_44.is(":focus")){
  318. if(_42){
  319. _44.removeClass("textbox-prompt");
  320. }else{
  321. _44.val(_43.prompt).addClass("textbox-prompt");
  322. }
  323. }
  324. $(this).textbox("validate");
  325. });
  326. },initValue:function(jq,_45){
  327. return jq.each(function(){
  328. var _46=$.data(this,"textbox");
  329. _46.options.value="";
  330. $(this).textbox("setText",_45);
  331. _46.textbox.find(".textbox-value").val(_45);
  332. $(this).val(_45);
  333. });
  334. },setValue:function(jq,_47){
  335. return jq.each(function(){
  336. var _48=$.data(this,"textbox").options;
  337. var _49=$(this).textbox("getValue");
  338. $(this).textbox("initValue",_47);
  339. if(_49!=_47){
  340. _48.onChange.call(this,_47,_49);
  341. $(this).closest("form").trigger("_change",[this]);
  342. }
  343. });
  344. },getText:function(jq){
  345. var _4a=jq.textbox("textbox");
  346. if(_4a.is(":focus")){
  347. return _4a.val();
  348. }else{
  349. return jq.textbox("options").value;
  350. }
  351. },getValue:function(jq){
  352. return jq.data("textbox").textbox.find(".textbox-value").val();
  353. },reset:function(jq){
  354. return jq.each(function(){
  355. var _4b=$(this).textbox("options");
  356. $(this).textbox("setValue",_4b.originalValue);
  357. });
  358. },getIcon:function(jq,_4c){
  359. return jq.data("textbox").textbox.find(".textbox-icon:eq("+_4c+")");
  360. },getTipX:function(jq){
  361. var _4d=jq.data("textbox");
  362. var _4e=_4d.options;
  363. var tb=_4d.textbox;
  364. var _4f=tb.find(".textbox-text");
  365. var _50=tb.find(".textbox-addon")._outerWidth();
  366. var _51=tb.find(".textbox-button")._outerWidth();
  367. if(_4e.tipPosition=="right"){
  368. return (_4e.iconAlign=="right"?_50:0)+(_4e.buttonAlign=="right"?_51:0)+1;
  369. }else{
  370. if(_4e.tipPosition=="left"){
  371. return (_4e.iconAlign=="left"?-_50:0)+(_4e.buttonAlign=="left"?-_51:0)-1;
  372. }else{
  373. return _50/2*(_4e.iconAlign=="right"?1:-1);
  374. }
  375. }
  376. }};
  377. $.fn.textbox.parseOptions=function(_52){
  378. var t=$(_52);
  379. return $.extend({},$.fn.validatebox.parseOptions(_52),$.parser.parseOptions(_52,["prompt","iconCls","iconAlign","buttonText","buttonIcon","buttonAlign",{multiline:"boolean",editable:"boolean",iconWidth:"number"}]),{value:(t.val()||undefined),type:(t.attr("type")?t.attr("type"):undefined),disabled:(t.attr("disabled")?true:undefined),readonly:(t.attr("readonly")?true:undefined)});
  380. };
  381. $.fn.textbox.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,prompt:"",value:"",type:"text",multiline:false,editable:true,disabled:false,readonly:false,icons:[],iconCls:null,iconAlign:"right",iconWidth:18,buttonText:"",buttonIcon:null,buttonAlign:"right",inputEvents:{blur:function(e){
  382. var t=$(e.data.target);
  383. var _53=t.textbox("options");
  384. t.textbox("setValue",_53.value);
  385. },keydown:function(e){
  386. if(e.keyCode==13){
  387. var t=$(e.data.target);
  388. t.textbox("setValue",t.textbox("getText"));
  389. }
  390. }},onChange:function(_54,_55){
  391. },onResize:function(_56,_57){
  392. },onClickButton:function(){
  393. },onClickIcon:function(_58){
  394. }});
  395. })(jQuery);