jquery.validatebox.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. /**
  2. * jQuery EasyUI 1.3.4
  3. *
  4. * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the GPL or commercial licenses
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. * http://www.gnu.org/licenses/gpl.txt
  9. * http://www.jeasyui.com/license_commercial.php
  10. *
  11. */
  12. (function($){
  13. function _1(_2){
  14. $(_2).addClass("validatebox-text");
  15. };
  16. function _3(_4){
  17. var _5=$.data(_4,"validatebox");
  18. _5.validating=false;
  19. $(_4).tooltip("destroy");
  20. $(_4).unbind();
  21. $(_4).remove();
  22. };
  23. function _6(_7){
  24. var _8=$(_7);
  25. var _9=$.data(_7,"validatebox");
  26. _8.unbind(".validatebox");
  27. if(_9.options.novalidate){
  28. return;
  29. }
  30. _8.bind("focus.validatebox",function(){
  31. _9.validating=true;
  32. _9.value=undefined;
  33. (function(){
  34. if(_9.validating){
  35. if(_9.value!=_8.val()){
  36. _9.value=_8.val();
  37. if(_9.timer){
  38. clearTimeout(_9.timer);
  39. }
  40. _9.timer=setTimeout(function(){
  41. $(_7).validatebox("validate");
  42. },_9.options.delay);
  43. }else{
  44. _f(_7);
  45. }
  46. setTimeout(arguments.callee,200);
  47. }
  48. })();
  49. }).bind("blur.validatebox",function(){
  50. if(_9.timer){
  51. clearTimeout(_9.timer);
  52. _9.timer=undefined;
  53. }
  54. _9.validating=false;
  55. _a(_7);
  56. }).bind("mouseenter.validatebox",function(){
  57. if(_8.hasClass("validatebox-invalid")){
  58. _b(_7);
  59. }
  60. }).bind("mouseleave.validatebox",function(){
  61. if(!_9.validating){
  62. _a(_7);
  63. }
  64. });
  65. };
  66. function _b(_c){
  67. var _d=$.data(_c,"validatebox");
  68. var _e=_d.options;
  69. $(_c).tooltip($.extend({},_e.tipOptions,{content:_d.message,position:_e.tipPosition,deltaX:_e.deltaX})).tooltip("show");
  70. _d.tip=true;
  71. };
  72. function _f(_10){
  73. var _11=$.data(_10,"validatebox");
  74. if(_11&&_11.tip){
  75. $(_10).tooltip("reposition");
  76. }
  77. };
  78. function _a(_12){
  79. var _13=$.data(_12,"validatebox");
  80. _13.tip=false;
  81. $(_12).tooltip("hide");
  82. };
  83. function _14(_15){
  84. var _16=$.data(_15,"validatebox");
  85. var _17=_16.options;
  86. var box=$(_15);
  87. var _18=box.val();
  88. function _19(msg){
  89. _16.message=msg;
  90. };
  91. function _1a(_1b){
  92. var _1c=/([a-zA-Z_]+)(.*)/.exec(_1b);
  93. var _1d=_17.rules[_1c[1]];
  94. if(_1d&&_18){
  95. var _1e=eval(_1c[2]);
  96. if(!_1d["validator"](_18,_1e)){
  97. box.addClass("validatebox-invalid");
  98. var _1f=_1d["message"];
  99. if(_1e){
  100. for(var i=0;i<_1e.length;i++){
  101. _1f=_1f.replace(new RegExp("\\{"+i+"\\}","g"),_1e[i]);
  102. }
  103. }
  104. _19(_17.invalidMessage||_1f);
  105. if(_16.validating){
  106. _b(_15);
  107. }
  108. return false;
  109. }
  110. }
  111. return true;
  112. };
  113. if(_17.novalidate||box.is(":disabled")){
  114. return true;
  115. }
  116. if(_17.required){
  117. if(_18==""){
  118. box.addClass("validatebox-invalid");
  119. _19(_17.missingMessage);
  120. if(_16.validating){
  121. _b(_15);
  122. }
  123. return false;
  124. }
  125. }
  126. if(_17.validType){
  127. if(typeof _17.validType=="string"){
  128. if(!_1a(_17.validType)){
  129. return false;
  130. }
  131. }else{
  132. for(var i=0;i<_17.validType.length;i++){
  133. if(!_1a(_17.validType[i])){
  134. return false;
  135. }
  136. }
  137. }
  138. }
  139. box.removeClass("validatebox-invalid");
  140. _a(_15);
  141. return true;
  142. };
  143. function _20(_21,_22){
  144. var _23=$.data(_21,"validatebox").options;
  145. if(_22!=undefined){
  146. _23.novalidate=_22;
  147. }
  148. if(_23.novalidate){
  149. $(_21).removeClass("validatebox-invalid");
  150. _a(_21);
  151. }
  152. _6(_21);
  153. };
  154. $.fn.validatebox=function(_24,_25){
  155. if(typeof _24=="string"){
  156. return $.fn.validatebox.methods[_24](this,_25);
  157. }
  158. _24=_24||{};
  159. return this.each(function(){
  160. var _26=$.data(this,"validatebox");
  161. if(_26){
  162. $.extend(_26.options,_24);
  163. }else{
  164. _1(this);
  165. $.data(this,"validatebox",{options:$.extend({},$.fn.validatebox.defaults,$.fn.validatebox.parseOptions(this),_24)});
  166. }
  167. _20(this);
  168. _14(this);
  169. });
  170. };
  171. $.fn.validatebox.methods={options:function(jq){
  172. return $.data(jq[0],"validatebox").options;
  173. },destroy:function(jq){
  174. return jq.each(function(){
  175. _3(this);
  176. });
  177. },validate:function(jq){
  178. return jq.each(function(){
  179. _14(this);
  180. });
  181. },isValid:function(jq){
  182. return _14(jq[0]);
  183. },enableValidation:function(jq){
  184. return jq.each(function(){
  185. _20(this,false);
  186. });
  187. },disableValidation:function(jq){
  188. return jq.each(function(){
  189. _20(this,true);
  190. });
  191. }};
  192. $.fn.validatebox.parseOptions=function(_27){
  193. var t=$(_27);
  194. return $.extend({},$.parser.parseOptions(_27,["validType","missingMessage","invalidMessage","tipPosition",{delay:"number",deltaX:"number"}]),{required:(t.attr("required")?true:undefined),novalidate:(t.attr("novalidate")!=undefined?true:undefined)});
  195. };
  196. $.fn.validatebox.defaults={required:false,validType:null,delay:200,missingMessage:"This field is required.",invalidMessage:null,tipPosition:"right",deltaX:0,novalidate:false,tipOptions:{showEvent:"none",hideEvent:"none",showDelay:0,hideDelay:0,zIndex:"",onShow:function(){
  197. $(this).tooltip("tip").css({color:"#000",borderColor:"#CC9933",backgroundColor:"#FFFFCC"});
  198. },onHide:function(){
  199. $(this).tooltip("destroy");
  200. }},rules:{email:{validator:function(_28){
  201. return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(_28);
  202. },message:"Please enter a valid email address."},url:{validator:function(_29){
  203. return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(_29);
  204. },message:"Please enter a valid URL."},length:{validator:function(_2a,_2b){
  205. var len=$.trim(_2a).length;
  206. return len>=_2b[0]&&len<=_2b[1];
  207. },message:"Please enter a value between {0} and {1}."},remote:{validator:function(_2c,_2d){
  208. var _2e={};
  209. _2e[_2d[1]]=_2c;
  210. var _2f=$.ajax({url:_2d[0],dataType:"json",data:_2e,async:false,cache:false,type:"post"}).responseText;
  211. return _2f=="true";
  212. },message:"Please fix this field."}}};
  213. })(jQuery);