jquery.textbox.js 11 KB

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