jquery 验证非常简单,下面总结常用的三种方式:

第一种方式:也是比较标准的方式:

首先引入jquery 插件和 jquery 验证插件:

第一步:引入插件

<script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript" src="js/jquery.metadata.js"></script>
<script type="text/javascript" src="js/messages_zh.js"></script>

第二步: 定义表单的错误输出:

<style type="text/css">
#frm label.error {
color: Red;
}
</style>

第三步:添加错误处理方法;

jquery验证,需要有 1:定义验证方法, 2:添加验证规则

下面贴出常用的验证小例子,一看就明白了。

先看效果图:


[javascript]view plaincopy
  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <htmlxmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
  5. <scripttype="text/javascript"src="js/jquery-1.6.1.min.js"></script>
  6. <scripttype="text/javascript"src="js/jquery.validate.js"></script>
  7. <scripttype="text/javascript"src="js/jquery.metadata.js"></script>
  8. <scripttype="text/javascript"src="js/messages_zh.js"></script>
  9. <styletype="text/css">
  10. #frmlabel.error{
  11. color:Red;
  12. }
  13. </style>
  14. </head>
  15. <scripttype="text/javascript">
  16. $(document).ready(function(){
  17. $("#clickme").click(function(){
  18. alert("HelloWorld");
  19. });
  20. $("#frm").validate({
  21. rules:{
  22. username:{
  23. required:true,
  24. minlength:4,
  25. maxlength:20,
  26. byteMaxLength:20,
  27. valiEnglish:true
  28. },
  29. postcode:{
  30. postcodeVal:true
  31. },
  32. number:{
  33. byteMaxLength:5,
  34. numFormat:5
  35. },
  36. identifier:{
  37. sfzhValidate:true
  38. }
  39. },
  40. messages:{
  41. username:{
  42. required:"请输入用户名4--20个英文字符",
  43. minlength:$.format("Keeptyping,atleast{0}charactersrequired!"),
  44. maxlength:$.format("Whoa!Maximum{0}charactersallowed!")
  45. },
  46. number:{
  47. numFormat:$.format("请输入{0}数字")
  48. }
  49. }
  50. });
  51. jQuery.validator.addMethod("byteMaxLength",function(value,
  52. element,param){
  53. varlength=value.length;
  54. for(vari=0;i<value.length;i++){
  55. if(value.charCodeAt(i)>127){
  56. length++;
  57. }
  58. }
  59. returnthis.optional(element)||(length<=param);
  60. },$.validator.format("不能超过{0}个字节(一个中文字算2个字节)"));
  61. jQuery.validator.addMethod("numFormat",function(value,element,param){
  62. returnthis.optional(element)||/^\d*$/.test(value);
  63. }
  64. //,$.validator.format("请输入数字{0}位以内")
  65. );
  66. //number(9,3)
  67. jQuery.validator.addMethod("numFormat63",function(value,element){
  68. returnthis.optional(element)||/^[0-9]{1,6}(\.\d{1,3})$/.test(value);
  69. },$.validator.format("请输入合法数字,精度格式123456.0")
  70. );
  71. jQuery.validator.addMethod("postcodeVal",function(value,element){
  72. returnthis.optional(element)||/^[0-9]\d{5}(?!\d)$/.test(value);
  73. },$.validator.format("请输入合法的邮编")
  74. );
  75. jQuery.validator.addMethod("numberAndLettersVal",function(value,element){
  76. returnthis.optional(element)||/^[a-zA-Z0-9]+$/.test(value);
  77. },$.validator.format("请输入字母或数字")
  78. );
  79. jQuery.validator.addMethod("sfzhValidate",function(value,element){
  80. returnthis.optional(element)||/^(\d{14}|\d{17})(\d|[xX])$/.test(value);
  81. },$.validator.format("请输入合法身份证号")
  82. );
  83. jQuery.validator.addMethod("valiEnglish",function(value,element){
  84. returnthis.optional(element)||/^[a-zA-Z]*$/.test(value);
  85. },$.validator.format("请输入字母或者空格")
  86. );
  87. });
  88. </script>
  89. <body>
  90. <formid="frm"name="frm"method="post"action=""><label>用户名:
  91. <inputtype="text"name="username"id="username"/>
  92. </label>
  93. <p>
  94. <label>邮编:<label></label></label>
  95. <label>
  96. <inputtype="text"name="postcode"id="postcode"/>
  97. <br/>
  98. </label>
  99. </p>
  100. <p><label>数字:
  101. <inputtype="text"name="number"id="number"/>
  102. </label>
  103. <br/><label>身份证号:
  104. <inputtype="text"name="identifier"id="identifier"/>
  105. </label>
  106. <label>
  107. <inputtype="button"name="clickme"id="clickme"value="clickme"/>
  108. </label>
  109. </p>
  110. </form>
  111. </body>
  112. </html>


这是一个完整的验证示例,关于引入的代码已经上传,可以点击下载

下面讲解其中的重点方法:

[javascript]view plaincopy
  1. jQuery.validator.addMethod("byteMaxLength",function(value,
  2. element,param){
  3. varlength=value.length;
  4. for(vari=0;i<value.length;i++){
  5. if(value.charCodeAt(i)>127){
  6. length++;
  7. }
  8. }
  9. returnthis.optional(element)||(length<=param);
  10. },$.validator.format("不能超过{0}个字节(一个中文字算2个字节)"));
jQuery.validator.addMethod() 方法,有三个参数,

第一个参数 : “byteMaxLength” 是定义方法名,必须保证方法名唯一,是一个identifier标志。

第二个参数: 是下面这个回调(callback)函数:

[javascript]view plaincopy
  1. function(value,element,param){
  2. varlength=value.length;
  3. for(vari=0;i<value.length;i++){
  4. if(value.charCodeAt(i)>127){
  5. length++;
  6. }
  7. }
  8. returnthis.optional(element)||(length<=param);
  9. }
回调函数有三个参数:

第一个:value ,是当前验证的元素的值。

第二个: element 是当前被验证的元素。

第三个:是传入的参数,例如: min : 5 这个参数为5, 对于本方法调用的时候,例如:byteMaxLength:10 其中10为传入参数。

这个方法的方法名为: byteMaxLength 回调函数如上,

回调函数的作用就是验证输入的为多少个字节,其中一个汉字代表两个字符,字符为0-127的ASCII码,其中有一句返回:

return this.optional(element) 这个函数调用的意思是: 用于表单输入值不为空时验证,当field为空时,即element的值为空,this.optional(element) = true, 就是说该filed不是必填项,当不填时也通过验证, 如果element的值不为空 this.optional(element) = false 就要根据 || 后面的验证来判断返回为true 或false的目的,总结起来 this.optional(element) 就是为了说明 当前验证的 field不是必填项。

第三个参数: 如下:

[javascript]view plaincopy
  1. $.validator.format("不能超过{0}个字节(一个中文字算2个字节)")
这第三个参数可以直接是一个message 就是验证的提示信息, 为了显示函数的验证的信息,这个参数也可以通过创建函数 jQuery.validator.format(value) 来显 示, 其中 {0} 代表 该方法 的参数如果 方法调用如: byteMaxLength : 10 上面的输入就是 不能超过10个字节,(一个中文字算两个字节)


下面看一下这段代码:

[javascript]view plaincopy
  1. $("#frm").validate({
  2. rules:{
  3. username:{
  4. required:true,
  5. minlength:4,
  6. maxlength:20,
  7. byteMaxLength:20,
  8. valiEnglish:true
  9. },
  10. postcode:{
  11. postcodeVal:true
  12. },
  13. number:{
  14. byteMaxLength:5,
  15. numFormat:5
  16. },
  17. identifier:{
  18. sfzhValidate:true
  19. }
  20. },
  21. messages:{
  22. username:{
  23. required:"请输入用户名4--20个英文字符",
  24. minlength:$.format("Keeptyping,atleast{0}charactersrequired!"),
  25. maxlength:$.format("Whoa!Maximum{0}charactersallowed!")
  26. },
  27. number:{
  28. numFormat:$.format("请输入{0}数字")
  29. }
  30. }
  31. });
首先这是一个方法调用 [javascript]view plaincopy
  1. $("#frm").validate([options])
验证选择的表单,方法的参数是可选项,可以输入0个或者键值对(key/value)

这个方法是为了 处理例如:submit , focus , keyup , blur, click 触发验证的,对象是整个表单的元素,或者是单个元素,使用rules和 messages 定义验证的元素,使用errorClass, errorElement, wrapper, errorLabelContainer, errorContainer, showErrors, success, errorPlacement, highlight, unhighlight, and ignoreTitle去控制非法元素的错误信息显示。

下面看 validate 的方法 rules();

返回 第一个选择的元素的验证的规则, 有若干种方式定义验证规则。

rules 方法定义了基于id的验证,

[javascript]view plaincopy
  1. username:{
  2. required:true,
  3. minlength:4,
  4. maxlength:20,
  5. byteMaxLength:20,
  6. valiEnglish:true
  7. }
如上:其中,username为 id名, {}中为定义的验证方法,就是这个id 的都需要哪些方法验证,方法名就是上面讲到的方法;

这样就定义了。

messages中定义了 :

[javascript]view plaincopy
  1. username:{
  2. required:"请输入用户名4--20个英文字符",
  3. minlength:$.format("Keeptyping,atleast{0}charactersrequired!"),
  4. maxlength:$.format("Whoa!Maximum{0}charactersallowed!")
  5. }
这个id中方法验证错误提示信息。其中可以直接输出message或者调用 $.format()方法。

上面的标准格式就是:

var$params={debug:false,rules:{},messages:{}};

$("#frm").validate($params);

rules{}中定义验证规则的方法。 messages{}定义错误输出。

以上为第一种方式:

第二种方式:和第一种基本差不多:

[javascript]view plaincopy
  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <htmlxmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
  5. <scripttype="text/javascript"src="js/jquery-1.6.1.min.js"></script>
  6. <scripttype="text/javascript"src="js/jquery.validate.js"></script>
  7. <scripttype="text/javascript"src="js/jquery.metadata.js"></script>
  8. <scripttype="text/javascript"src="js/messages_zh.js"></script>
  9. <styletype="text/css">
  10. #frmlabel.error{
  11. color:Red;
  12. }
  13. </style>
  14. </head>
  15. <scripttype="text/javascript">
  16. $(document).ready(function(){
  17. $("#clickme").click(function(){
  18. alert("HelloWorld");
  19. });
  20. jQuery.validator.addMethod("byteMaxLength",function(value,
  21. element,param){
  22. varlength=value.length;
  23. for(vari=0;i<value.length;i++){
  24. if(value.charCodeAt(i)>127){
  25. length++;
  26. }
  27. }
  28. returnthis.optional(element)||(length<=param);
  29. },$.validator.format("不能超过{0}个字节(一个中文字算2个字节)"));
  30. jQuery.validator.addMethod("numFormat",function(value,element,param){
  31. returnthis.optional(element)||/^\d*$/.test(value);
  32. },$.validator.format("请输入数字{0}位以内")
  33. );
  34. //number(9,3)
  35. jQuery.validator.addMethod("numFormat63",function(value,element){
  36. returnthis.optional(element)||/^[0-9]{1,6}(\.\d{1,3})$/.test(value);
  37. },$.validator.format("请输入合法数字,精度格式123456.0")
  38. );
  39. jQuery.validator.addMethod("postcodeVal",function(value,element){
  40. returnthis.optional(element)||/^[0-9]\d{5}(?!\d)$/.test(value);
  41. },$.validator.format("请输入合法的邮编")
  42. );
  43. jQuery.validator.addMethod("numberAndLettersVal",function(value,element){
  44. returnthis.optional(element)||/^[a-zA-Z0-9]+$/.test(value);
  45. },$.validator.format("请输入字母或数字")
  46. );
  47. jQuery.validator.addMethod("sfzhValidate",function(value,element){
  48. returnthis.optional(element)||/^(\d{14}|\d{17})(\d|[xX])$/.test(value);
  49. },$.validator.format("请输入合法身份证号")
  50. );
  51. jQuery.validator.addMethod("valiEnglish",function(value,element){
  52. returnthis.optional(element)||/^[a-zA-Z]*$/.test(value);
  53. },$.validator.format("请输入字母或者空格")
  54. );
  55. $("#frm").validate();
  56. check_infor();
  57. });
  58. functioncheck_infor(){
  59. $("#username").attr("class","{byteMaxLength:22,valiEnglish:true}");
  60. $("#postcode").attr("class","{byteMaxLength:6,postcodeVal:true}");
  61. $("#number").attr("class","{byteMaxLength:6,numFormat:6}");
  62. $("#identifier").attr("class","{sfzhValidate:true}");
  63. }
  64. </script>
  65. <body>
  66. <formid="frm"name="frm"method="post"action=""><label>用户名:
  67. <inputtype="text"name="username"id="username"/>
  68. </label>
  69. <p>
  70. <label>邮编:<label></label></label>
  71. <label>
  72. <inputtype="text"name="postcode"id="postcode"/>
  73. <br/>
  74. </label>
  75. </p>
  76. <p><label>数字:
  77. <inputtype="text"name="number"id="number"/>
  78. </label>
  79. <br/><label>身份证号:
  80. <inputtype="text"name="identifier"id="identifier"/>
  81. </label>
  82. <label>
  83. <inputtype="button"name="clickme"id="clickme"value="clickme"/>
  84. </label>
  85. </p>
  86. </form>
  87. </body>
  88. </html>

以上为第二种方式的代码:其中:

方法定义和第一种一样:在于调用:

[javascript]view plaincopy
  1. functioncheck_infor(){
  2. $("#username").attr("class","{byteMaxLength:22,valiEnglish:true}");
  3. $("#postcode").attr("class","{byteMaxLength:6,postcodeVal:true}");
  4. $("#number").attr("class","{byteMaxLength:6,numFormat:6}");
  5. $("#identifier").attr("class","{sfzhValidate:true}");
  6. }
其中定义了一个javascript方法专门用于为form表单中需要验证的id进行验证:

其中用到了.attr()方法:这个方法有很多种参数形式 .attr(attributeName,value)方法

attributeName为参数名: value 为参数值

其中下面means 是为 id为username的 元素 的 class 属性 添加值:

[javascript]view plaincopy
  1. "{byteMaxLength:22,valiEnglish:true}"
[javascript]view plaincopy
  1. $("#username").attr("class","{byteMaxLength:22,valiEnglish:true}");

这样该id元素就有了验证。

注意: 在自定义的check_infor()调用之前 ,必须首先调用$("#frm").valudate();方法;

第三种方式:

[javascript]view plaincopy
  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <htmlxmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
  5. <scripttype="text/javascript"src="js/jquery-1.6.1.min.js"></script>
  6. <scripttype="text/javascript"src="js/jquery.validate.js"></script>
  7. <scripttype="text/javascript"src="js/jquery.metadata.js"></script>
  8. <scripttype="text/javascript"src="js/messages_zh.js"></script>
  9. <styletype="text/css">
  10. #frmlabel.error{
  11. color:Red;
  12. }
  13. </style>
  14. </head>
  15. <scripttype="text/javascript">
  16. $(document).ready(function(){
  17. $("#clickme").click(function(){
  18. alert("HelloWorld");
  19. });
  20. jQuery.validator.addMethod("byteMaxLength",function(value,
  21. element,param){
  22. varlength=value.length;
  23. for(vari=0;i<value.length;i++){
  24. if(value.charCodeAt(i)>127){
  25. length++;
  26. }
  27. }
  28. returnthis.optional(element)||(length<=param);
  29. },$.validator.format("不能超过{0}个字节(一个中文字算2个字节)"));
  30. jQuery.validator.addMethod("numFormat",function(value,element,param){
  31. returnthis.optional(element)||/^\d*$/.test(value);
  32. },$.validator.format("请输入数字{0}位以内")
  33. );
  34. //number(9,3)
  35. jQuery.validator.addMethod("numFormat63",function(value,element){
  36. returnthis.optional(element)||/^[0-9]{1,6}(\.\d{1,3})$/.test(value);
  37. },$.validator.format("请输入合法数字,精度格式123456.0")
  38. );
  39. jQuery.validator.addMethod("postcodeVal",function(value,element){
  40. returnthis.optional(element)||/^[0-9]\d{5}(?!\d)$/.test(value);
  41. },$.validator.format("请输入合法的邮编")
  42. );
  43. jQuery.validator.addMethod("numberAndLettersVal",function(value,element){
  44. returnthis.optional(element)||/^[a-zA-Z0-9]+$/.test(value);
  45. },$.validator.format("请输入字母或数字")
  46. );
  47. jQuery.validator.addMethod("sfzhValidate",function(value,element){
  48. returnthis.optional(element)||/^(\d{14}|\d{17})(\d|[xX])$/.test(value);
  49. },$.validator.format("请输入合法身份证号")
  50. );
  51. jQuery.validator.addMethod("valiEnglish",function(value,element){
  52. returnthis.optional(element)||/^[a-zA-Z]*$/.test(value);
  53. },$.validator.format("请输入字母或者空格")
  54. );
  55. $("#frm").validate();
  56. $('#username').rules('add',{required:true,byteMaxLength:20,valiEnglish:true});
  57. $('#postcode').rules('add',{postcodeVal:true});
  58. $('#number').rules('add',{byteMaxLength:5,numFormat:5});
  59. $('#identifier').rules('add',{sfzhValidate:true});
  60. });
  61. </script>
  62. <body>
  63. <formid="frm"name="frm"method="post"action=""><label>用户名:
  64. <inputtype="text"name="username"id="username"/>
  65. </label>
  66. <p>
  67. <label>邮编:<label></label></label>
  68. <label>
  69. <inputtype="text"name="postcode"id="postcode"/>
  70. <br/>
  71. </label>
  72. </p>
  73. <p><label>数字:
  74. <inputtype="text"name="number"id="number"/>
  75. </label>
  76. <br/><label>身份证号:
  77. <inputtype="text"name="identifier"id="identifier"/>
  78. </label>
  79. <label>
  80. <inputtype="button"name="clickme"id="clickme"value="clickme"/>
  81. </label>
  82. </p>
  83. </form>
  84. </body>
  85. </html>

第三种方式与其他两种方式不同的地方就是:

[javascript]view plaincopy
  1. $('#username').rules('add',{required:true,byteMaxLength:20,valiEnglish:true});
  2. $('#postcode').rules('add',{postcodeVal:true});
  3. $('#number').rules('add',{byteMaxLength:5,numFormat:5});
  4. $('#identifier').rules('add',{sfzhValidate:true});

为每一个单独的元素添加验证规则。其中调用了 rules( "add", rules ) 方法:

增加验证规则为匹配的元素。

注意:$("form").validate()方法必须首先被调用。

这个规则也能包含一个messages-object,定义常用的messages。

更多相关文章

  1. js限制文本框只能输入数字方法
  2. html 页面内锚点定位及跳转方法总结
  3. 是否有更快的方法来遍历HTMLDocument中的每一个元素呢?
  4. Jquery-如何使用prop方法更改backgroundColor?
  5. 关于 客户端发现响应内容类型为“text/html; charset=utf-8”,但
  6. HTML5 Canvas 绘图方法整理 【十五、Canvas页面交互: 鼠标事件 】
  7. 不会出现Javascript context.closePath()方法
  8. Delphi下发送Email的方法
  9. 关于input的一些问题解决方法分享

随机推荐

  1. Android Context 详解
  2. Android(安卓)网络通信框架Volley简介
  3. Android(安卓)GridView显示一行,左右滑动
  4. Android(安卓)输入键盘弹出隐藏监听
  5. 解决小米手机不能运行Android(安卓)Studi
  6. Android自实现activity之间切换,view随手
  7. Android 控件及其属性2
  8. 日拱一卒(二十二)
  9. Android设置任何控件透明度
  10. Android NDK生成共享库和静态库