jQuery Validate 表单验证插件
原文链接:https://blog.csdn.net/xiangxiao_bobo/article/details/119772293
一、 jQuery Validate 插件的介绍
jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API。所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言。
该插件是由 Jörn Zaefferer 编写和维护的,他是 jQuery 团队的一名成员,是 jQuery UI 团队的主要开发人员,是 QUnit 的维护人员。
最常使用JavaScript的场合就是表单的验证,而jQuery作为一个优秀的JavaScript库,也提供了一个优秀的表单验证插件----Validation。Validation是历史最悠久的jQuery插件之一,经过了全球范围内不同项目的验证,并得到了许多Web开发者的好评。
官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/
在线文档:http://docs.jquery.com/Plugins/Validation
在线 API:http://jquery.bassistance.de/api-browser/plugins.html
配置说明:http://docs.jquery.com/Plugins/Validation/validate#options
项目介绍:http://plugins.jquery.com/project/validate
Github:https://github.com/jzaefferer/jquery-validation
二、jQuery Validate 拥有的特点介绍
作为一个标准的验证方法库,jQuery Validate 拥有以下的特点:
(1)内置验证规则。拥有必填、数字、Email、URL和信用卡号码等19类内置验证规则。功能强大的 jQuery 表单验证插件,适用于日常的 E-mail、电话号码、网址等验证及 Ajax 验证,除自身拥有丰富的验证规则外,还可以添加自定义的验证规则。
兼容 IE 6+, Chrome, Firefox, Safari, Opera 10+ 。
(2)自定义验证规则。可以很方便地自定义验证规则。
(3) 简单,强大的信息提示。默认了验证信息提示,并提供自定义覆盖默认的提示信息的功能。
(4) 实时验证:通过keyup 或是blur事件来触发校验,而不仅仅是提交的时候进行校验。
三、jQuery Validate 的下载地址
(1)官网下载地址 :http://jqueryvalidation.org/
(2)Github 开源项目: https://github.com/jzaefferer/jquery-validation
四、校验规则说明
校验规则是指表单元素需要做哪些方面的验证,例如:非空即必填字段,邮箱格式验证,日期格式验证等。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | (1)required:true 必输字段 (2)remote:"check.shtml" 使用ajax方法调用check.shtml验证输入值 (3)email:true 必须输入正确格式的电子邮件(只能验证格式,不保证有效性) (4)url:true 必须输入正确格式的网址 (5)date:true 必须输入正确格式的日期 (6)dateISO:true 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性 (7)number:true 必须输入合法的数字(负数,小数) (8)digits:true 必须输入整数 (9)creditcard: 必须输入合法的信用卡号 (10)equalTo:"#field" 输入值必须和#field相同 (11)accept: 输入拥有合法后缀名的字符串(上传文件的后缀) (12)maxlength:5 输入长度最多是5的字符串(汉字算一个字符) (13)minlength:10 输入长度最小是10的字符串(汉字算一个字符) (14)rangelength:[5,10] 输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符) (15)range:[5,10] 输入值必须介于 5 和 10 之间 (16)max:5 输入值不能大于5 (17)min:10 输入值不能小于10 |
五、简单案例演示
1.需要引入jQuery库和Validation插件,而且必须先导入jQuery库,再导入Validation。
<script type="text/javascript" src="js/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="js/jquery.validate.min.js"></script>
2.页面代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | <! DOCTYPE html> < html > < head > < meta charset="UTF-8"> < title >表单验证</ title > <!-- Css --> < style type="text/css"> .tab{ width: 800px; height: 300px; } .tab,.tab tr td{ border: 1px solid darkgray; } .tab tr th{ color: green; } .t_right{ text-align: right; width: 15%; } </ style > <!-- 导入jquery库和validation插件 --> < script type="text/javascript" src="js/jquery-3.6.0.min.js"></ script > < script type="text/javascript" src="js/jquery.validate.min.js"></ script > < script type="text/javascript" src="js/messages_zh.min.js"></ script > <!-- 编写js代码 --> < script type="text/javascript"> $(function(){ //使用表单元素调用validata()校验方法 $("form").validate(); }) </ script > </ head > < body > <!-- 表单页面HTML代码,其中需要校验的每个表单元素都设置了校验规则 --> < form action="/" method="post"> < table border="1" class="tab" cellspacing="0" align="center"> < tr > < th colspan="2">用户注册</ th > </ tr > < tr > < td class="t_right">用户名:</ td > < td >< input type="text" name="username" required="true" rangelength="[3,6]"/></ td > </ tr > < tr > < td class="t_right">密码:</ td > < td >< input type="password" id="pwd1" name="pwd1" required="true" rangelength="[6,16]"/></ td > </ tr > < tr > < td class="t_right">确认密码:</ td > < td >< input type="password" name="pwd2" required="true" rangelength="[6,16]" equalTo="#pwd1" /></ td > </ tr > < tr > < td class="t_right">Email:</ td > < td >< input type="text" name="email" required="true" email="email"/></ td > </ tr > < tr > < td class="t_right">出生日期:</ td > < td >< input type="text" name="birthday" required="true" dateISO="yyyy-MM-dd"/></ td > </ tr > < tr style="text-align: center;"> < td colspan="2">< input type="submit" name="sub" value="注 册"/></ td > </ tr > </ table > </ form > </ body > </ html > |
3.效果图
4.案例说明
(1)首先需要引入jquery-3.6.0.min.js,因为这个插件是在JQuery的基础上进行的。
(2)引入校验插件jquery.validate.min.js 。
(3)引入提示本地化脚本messages_zh.min.js。验证信息的国际化,默认验证提示是英文的,导入messages_zh.min.js已写好的国际化文件就可实现汉化错误提示消息。
(4)在input框的class属性中添加要校验规则。针对不同的字段,进行验证规则编码,设置字段相应的属性。
例如:
(5)确定哪个表单被校验,使用表单对象调用validate()校验方法。
1 2 3 4 5 6 7 | <!-- 编写js代码 --> < script type="text/javascript"> $(function(){ //使用表单元素调用validata()校验方法 $("form").validate(); }) </ script > |
到此,使用validation插件的表单验证看似结束了。但上面的验证方式存在两个弊端:
1. 不能自定义错误提示消息;
2. 验证规则都写在页面的表单元素中,代码可读性差。
下面,我们对此进行优化,在给表单绑定validate()方法时,通过参数指定验证规则和自定义提示消息。
六、优化表单验证
1.主要优化部分为validate()方法调用内部,使用rules定义校验规则,把原来定义在表单元素中的校验规则提取到这里定义;使用messages定义错误提示消息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <!-- 优化部分 --> < script type="text/javascript"> $(function(){ //优化表单验证方法 $("form").validate({ rules:{ "username":{ required:true, rangelength:[3,6] }, "pwd1":{ required:true, rangelength:[6,16] }, "pwd2":{ required:true, rangelength:[6,16], equalTo:"#pwd1" }, "email":{ required:true, email:"email" }, "birthday":{ required:true, dateISO:"yyyy-MM-dd" } }, messages:{ "username":{ required:"用户名不能为空", rangelength:"用户名长度必须在3-6个字符之间" }, "pwd1":{ required:"密码不能为空", rangelength:"密码长度必须在6-16个字符之间" }, "pwd2":{ required:"确认密码不能为空", rangelength:"密码长度必须在6-16个字符之间", equalTo:"两次密码不一致" }, "email":{ required:"邮箱不能为空", email:"邮箱格式不正确" }, "birthday":{ required:"出生日期不能为空", dateISO:"日期格式不正确" } } }); }) </ script > |
2.定义错误提示消息样式
1 2 3 4 5 6 7 8 9 10 | /* 定义错误提示消息的样式,这里需要关注一下插件的源码, 当出现错误时会为每个表单增加一个label标签显示错误消息, 而lable标签中自动引用了class="error"的类样式,因此在 这里直接定义一个error样式,就可以直接被引用。 */ .error{ font-size: 12px; color: red; } |
3.效果图
4.优化后的完整案例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | <! DOCTYPE html> < html > < head > < meta charset="UTF-8"> < title >优化表单验证</ title > <!-- Css --> < style type="text/css"> .tab{ width: 800px; height: 300px; } .tab,.tab tr td{ border: 1px solid darkgray; } .tab tr th{ color: green; } .t_right{ text-align: right; width: 15%; } /* 定义错误提示消息的样式,这里需要关注一下插件的源码, 当出现错误时会为每个表单增加一个label标签显示错误消息, 而lable标签中自动引用了class="error"的类样式,因此在 这里直接定义一个error样式,就可以直接被引用。 */ .error{ font-size: 12px; color: red; } </ style > <!-- 导入jquery库和validation插件 --> < script type="text/javascript" src="js/jquery-3.6.0.min.js"></ script > < script type="text/javascript" src="js/jquery.validate.min.js"></ script > < script type="text/javascript" src="js/messages_zh.min.js"></ script > <!-- 优化部分 --> < script type="text/javascript"> $(function(){ //优化表单验证方法 $("form").validate({ rules:{ "username":{ required:true, rangelength:[3,6] }, "pwd1":{ required:true, rangelength:[6,16] }, "pwd2":{ required:true, rangelength:[6,16], equalTo:"#pwd1" }, "email":{ required:true, email:"email" }, "birthday":{ required:true, dateISO:"yyyy-MM-dd" } }, messages:{ "username":{ required:"用户名不能为空", rangelength:"用户名长度必须在3-6个字符之间" }, "pwd1":{ required:"密码不能为空", rangelength:"密码长度必须在6-16个字符之间" }, "pwd2":{ required:"确认密码不能为空", rangelength:"密码长度必须在6-16个字符之间", equalTo:"两次密码不一致" }, "email":{ required:"邮箱不能为空", email:"邮箱格式不正确" }, "birthday":{ required:"出生日期不能为空", dateISO:"日期格式不正确" } } }); }) </ script > </ head > < body > < form id="regist" action="/" method="post"> < table border="1" class="tab" cellspacing="0" align="center"> < tr > < th colspan="2">用户注册</ th > </ tr > < tr > < td class="t_right">用户名:</ td > < td >< input type="text" name="username"/></ td > </ tr > < tr > < td class="t_right">密码:</ td > < td >< input type="password" id="pwd1" name="pwd1"/></ td > </ tr > < tr > < td class="t_right">确认密码:</ td > < td >< input type="password" name="pwd2"/></ td > </ tr > < tr > < td class="t_right">Email:</ td > < td >< input type="text" name="email"/></ td > </ tr > < tr > < td class="t_right">出生日期:</ td > < td >< input type="text" name="birthday"/></ td > </ tr > < tr style="text-align: center;"> < td colspan="2">< input type="submit" name="sub" value="注 册"/></ td > </ tr > </ table > </ form > </ body > </ html > |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2023-03-15 clientHeight、clientWidth innerHeight innerWidth
2023-03-15 笔记本电脑怎样连接台式机显示器