jquery.maskedbox.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. /**
  2. * EasyUI for jQuery 1.6.10
  3. *
  4. * Copyright (c) 2009-2018 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. var _3=$(_2).data("maskedbox");
  13. var _4=_3.options;
  14. $(_2).textbox(_4);
  15. $(_2).maskedbox("initValue",_4.value);
  16. };
  17. function _5(_6,_7){
  18. var _8=$(_6).maskedbox("options");
  19. var tt=(_7||$(_6).maskedbox("getText")||"").split("");
  20. var vv=[];
  21. for(var i=0;i<_8.mask.length;i++){
  22. if(_8.masks[_8.mask[i]]){
  23. var t=tt[i];
  24. vv.push(t!=_8.promptChar?t:" ");
  25. }
  26. }
  27. return vv.join("");
  28. };
  29. function _9(_a,_b){
  30. var _c=$(_a).maskedbox("options");
  31. var cc=_b.split("");
  32. var tt=[];
  33. for(var i=0;i<_c.mask.length;i++){
  34. var m=_c.mask[i];
  35. var r=_c.masks[m];
  36. if(r){
  37. var c=cc.shift();
  38. if(c!=undefined){
  39. var d=new RegExp(r,"i");
  40. if(d.test(c)){
  41. tt.push(c);
  42. continue;
  43. }
  44. }
  45. tt.push(_c.promptChar);
  46. }else{
  47. tt.push(m);
  48. }
  49. }
  50. return tt.join("");
  51. };
  52. function _d(_e,c){
  53. var _f=$(_e).maskedbox("options");
  54. var _10=$(_e).maskedbox("getSelectionRange");
  55. var _11=_12(_e,_10.start);
  56. var end=_12(_e,_10.end);
  57. if(_11!=-1){
  58. var r=new RegExp(_f.masks[_f.mask[_11]],"i");
  59. if(r.test(c)){
  60. var vv=_5(_e).split("");
  61. var _13=_11-_14(_e,_11);
  62. var _15=end-_14(_e,end);
  63. vv.splice(_13,_15-_13,c);
  64. $(_e).maskedbox("setValue",_9(_e,vv.join("")));
  65. _11=_12(_e,++_11);
  66. $(_e).maskedbox("setSelectionRange",{start:_11,end:_11});
  67. }
  68. }
  69. };
  70. function _16(_17,_18){
  71. var _19=$(_17).maskedbox("options");
  72. var vv=_5(_17).split("");
  73. var _1a=$(_17).maskedbox("getSelectionRange");
  74. if(_1a.start==_1a.end){
  75. if(_18){
  76. var _1b=_1c(_17,_1a.start);
  77. }else{
  78. var _1b=_12(_17,_1a.start);
  79. }
  80. var _1d=_1b-_14(_17,_1b);
  81. if(_1d>=0){
  82. vv.splice(_1d,1);
  83. }
  84. }else{
  85. var _1b=_12(_17,_1a.start);
  86. var end=_1c(_17,_1a.end);
  87. var _1d=_1b-_14(_17,_1b);
  88. var _1e=end-_14(_17,end);
  89. vv.splice(_1d,_1e-_1d+1);
  90. }
  91. $(_17).maskedbox("setValue",_9(_17,vv.join("")));
  92. $(_17).maskedbox("setSelectionRange",{start:_1b,end:_1b});
  93. };
  94. function _14(_1f,pos){
  95. var _20=$(_1f).maskedbox("options");
  96. var _21=0;
  97. if(pos>=_20.mask.length){
  98. pos--;
  99. }
  100. for(var i=pos;i>=0;i--){
  101. if(_20.masks[_20.mask[i]]==undefined){
  102. _21++;
  103. }
  104. }
  105. return _21;
  106. };
  107. function _12(_22,pos){
  108. var _23=$(_22).maskedbox("options");
  109. var m=_23.mask[pos];
  110. var r=_23.masks[m];
  111. while(pos<_23.mask.length&&!r){
  112. pos++;
  113. m=_23.mask[pos];
  114. r=_23.masks[m];
  115. }
  116. return pos;
  117. };
  118. function _1c(_24,pos){
  119. var _25=$(_24).maskedbox("options");
  120. var m=_25.mask[--pos];
  121. var r=_25.masks[m];
  122. while(pos>=0&&!r){
  123. pos--;
  124. m=_25.mask[pos];
  125. r=_25.masks[m];
  126. }
  127. return pos<0?0:pos;
  128. };
  129. function _26(e){
  130. if(e.metaKey||e.ctrlKey){
  131. return;
  132. }
  133. var _27=e.data.target;
  134. var _28=$(_27).maskedbox("options");
  135. var _29=[9,13,35,36,37,39];
  136. if($.inArray(e.keyCode,_29)!=-1){
  137. return true;
  138. }
  139. if(e.keyCode>=96&&e.keyCode<=105){
  140. e.keyCode-=48;
  141. }
  142. var c=String.fromCharCode(e.keyCode);
  143. if(e.keyCode>=65&&e.keyCode<=90&&!e.shiftKey){
  144. c=c.toLowerCase();
  145. }else{
  146. if(e.keyCode==189){
  147. c="-";
  148. }else{
  149. if(e.keyCode==187){
  150. c="+";
  151. }else{
  152. if(e.keyCode==190){
  153. c=".";
  154. }
  155. }
  156. }
  157. }
  158. if(e.keyCode==8){
  159. _16(_27,true);
  160. }else{
  161. if(e.keyCode==46){
  162. _16(_27,false);
  163. }else{
  164. _d(_27,c);
  165. }
  166. }
  167. return false;
  168. };
  169. $.extend($.fn.textbox.methods,{inputMask:function(jq,_2a){
  170. return jq.each(function(){
  171. var _2b=this;
  172. var _2c=$.extend({},$.fn.maskedbox.defaults,_2a);
  173. $.data(_2b,"maskedbox",{options:_2c});
  174. var _2d=$(_2b).textbox("textbox");
  175. _2d.unbind(".maskedbox");
  176. for(var _2e in _2c.inputEvents){
  177. _2d.bind(_2e+".maskedbox",{target:_2b},_2c.inputEvents[_2e]);
  178. }
  179. });
  180. }});
  181. $.fn.maskedbox=function(_2f,_30){
  182. if(typeof _2f=="string"){
  183. var _31=$.fn.maskedbox.methods[_2f];
  184. if(_31){
  185. return _31(this,_30);
  186. }else{
  187. return this.textbox(_2f,_30);
  188. }
  189. }
  190. _2f=_2f||{};
  191. return this.each(function(){
  192. var _32=$.data(this,"maskedbox");
  193. if(_32){
  194. $.extend(_32.options,_2f);
  195. }else{
  196. $.data(this,"maskedbox",{options:$.extend({},$.fn.maskedbox.defaults,$.fn.maskedbox.parseOptions(this),_2f)});
  197. }
  198. _1(this);
  199. });
  200. };
  201. $.fn.maskedbox.methods={options:function(jq){
  202. var _33=jq.textbox("options");
  203. return $.extend($.data(jq[0],"maskedbox").options,{width:_33.width,value:_33.value,originalValue:_33.originalValue,disabled:_33.disabled,readonly:_33.readonly});
  204. },initValue:function(jq,_34){
  205. return jq.each(function(){
  206. _34=_9(this,_5(this,_34));
  207. $(this).textbox("initValue",_34);
  208. });
  209. },setValue:function(jq,_35){
  210. return jq.each(function(){
  211. _35=_9(this,_5(this,_35));
  212. $(this).textbox("setValue",_35);
  213. });
  214. }};
  215. $.fn.maskedbox.parseOptions=function(_36){
  216. var t=$(_36);
  217. return $.extend({},$.fn.textbox.parseOptions(_36),$.parser.parseOptions(_36,["mask","promptChar"]),{});
  218. };
  219. $.fn.maskedbox.defaults=$.extend({},$.fn.textbox.defaults,{mask:"",promptChar:"_",masks:{"9":"[0-9]","a":"[a-zA-Z]","*":"[0-9a-zA-Z]"},inputEvents:{keydown:_26}});
  220. })(jQuery);