jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js)
Posted on 2018-03-02 10:15 火冰·瓶 阅读(415) 评论(0) 编辑 收藏 举报验证方式基于jQuery的validate 验证方式,也可以说是对jQuery validate的验证方式的扩展,使其更简单易用。
应用
一、引入 <script src="Scripts/jquery-1.7.1.min.js"></script>
<script src="Scripts/jquery.validate.js"></script>
<script src="Scripts/jquery.validate.unobtrusive.js"></script>
二、1)在需要验证的input标签上添加属性data-val="true",即表示改标签参加验证。
2)继续在标签上添加属性data-val-required="用户名不能为空!",表示此标签的内容不能为空的验证。
三、显示验证信息,有两种方式显示。一种是集中显示验证信息,另一种是在具体位置显示相对应的验证信息。
1)在需要显示验证信息的位置写入以下代码
1 2 3 4 5 | <div class = "validation-summary-valid" data-valmsg summary= "true" > <ul> <li style= "display: none" ></li> </ul> </div> |
2)相对应的验证信息显示
1 | <input type= "text" name= "cus" id= "cus" data-val= "true" data-val-required= "用户名不能为空!" /> <span data-valmsg- for = "cus" data-valmsg-replace= "true" ></span> |
以上三部即可完成最基本简单的验证。
如需添加标签的其他验证只需重复第二部即可。
验证规则
一、简单规则
刚才我们知道了data-val-required是必输字段,简单的验证规则如下
1.data-val-required 必输字段
2.data-val-email 必须输入正确格式的电子邮件
3.data-val-url 必须输入正确格式的网址
4.data-val-date 必须输入正确格式的日期
5.data-val-digits: 必须输入正整数
6.data-val-number:必须输入整数
二、复杂一点的规则
我们知道了简单基本的验证规则,但这些不能满足我们的需求。
1.比如注册确认密码的验证
(data-val-equalto="密码和确认密码不匹配。" data-val-equalto-other="pwd")
这时只设置一个属性不能满足我们的需求。因为我们要找到另一个文本框的值。data-val-equalto-other对应另一个文本框的name的值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <div class = "control-group" > <label class = "control-label" > *密码 </label> <div class = "controls" > <input type= "password" name= "pwd" id= "pwd" data-val= "true" data-val-required= "密码不能为空!" /> <span data-valmsg- for = "pwd" data-valmsg-replace= "true" ></span> </div> </div> <div class = "control-group" > <label class = "control-label" > *确认密码 </label> <div class = "controls" > <input type= "password" name= "Password1" id= "Password1" data-val= "true" data-val-required= "确认密码不能为空!" data-val-equalto= "密码和确认密码不匹配。" data-val-equalto-other= "pwd" /> <span data-valmsg- for = "Password1" data-valmsg-replace= "true" ></span> </div> 18</div> |
2.data-val-length 字符的长度 ,data-val-length-max表示最大字符数 data-val-length-min 表示最小字符数
1 2 3 4 5 6 7 8 9 | <div class = "control-group" > <label class = "control-label" > *密码 </label> <div class = "controls" > <input type= "password" name= "pwd" id= "pwd" data-val= "true" data-val-required= "密码不能为空!" data-val-length-max= "100" data-val-length-min= "6" data-val-length= "密码必须至少包含 6 个字符。" /> <span data-valmsg- for = "pwd" data-valmsg-replace= "true" ></span> </div> </div> |
3.data-val-accept 正确的后缀名,data-val-accept-exts 符合后缀名的集合
data-val="true" data-val-required="不能为空!" data-val-accept="后缀名为.jpg、.gif或.png" data-val-accept-exts="jpg|gif|png"
4.data-val-range 数字的大小范围,data-val-range-min 最小数 data-val-range-max 最大数
三、再复杂一点的规则(正则)
以上的验证规则需要两个或者两个以上的属性才能完成验证,但是这些仍然不能满足我们的需求。比如手机格式的验证,这些我们可能需要正则来辅助我们验证
data-val-regex表示正则的验证方式,data-val-regex-pattern正则的表达式
1 2 3 4 | <div class = "controls" > <input type= "text" id= "regex" name= "regex" data-val= "true" data-val-required= "不能为空!" data-val-regex= "手机格式不正确" data-val-regex-pattern= "(13[0-9]|15[012356789]|18[0236789]|14[57])[0-9]{8}" /> <span data-valmsg- for = "regex" data-valmsg-replace= "true" ></span> </div> |
四、再再复杂一点的规则(ajax)
有点时候我们需要ajax来验证规则,比如我们常见的检查用户名是否可用
data-val-remote可以帮助我们实现功能,data-val-remote-url表示ajax验证的路径,直接返回true or false 即可完成验证。当input输入时,会向服务端发起url为:checkuserid.aspx?loginName=xxx的get方法的request
1 2 3 4 | <div class = "controls" > <input type= "text" name= "loginName" data-val= "true" data-val-required= "登录名不能为空!" data-val-remote= "已经被注册,请选择其他登录名称!" data-val-remote-url= "checkuserid.aspx" /> <span data-valmsg- for = "loginName" data-valmsg-replace= "true" ></span> </div> |
五、终极验证规则(自定义验证规则)
虽然以上验证规则足够可以我们使用,但是可能需要我们自定义的验证规则。
熟悉jQuery validate的验证方式知道可以添加自定义的验证规则,因为此验证规则是对jQuery validate的扩展,所以需要在jQuery validate的基础上进行自定义验证。
1)添加jQuery validate自定义验证方法
判断值是否等于“123”
1 2 3 4 | $.validator.addMethod( 'notequal' , function (value, element, params ) { return value != "123" ; }); |
2)添加扩展方法的自定义方法
1 2 3 4 5 6 7 | $.validator.unobtrusive.adapters.add( "notequal" , function (options) { options.rules[ "notequal" ] = { }; options.messages[ "notequal" ] = options.message; }); |
3)data-val-notequal="姓名不能等于 123"
1 2 | <input type= "text" value= "" name= "cus" id= "cus" data-val= "true" data-val-notequal= "姓名不能等于 123" /> <span data-valmsg- for = "cus" data-valmsg-replace= "true" ></span> |
这样即可完成简单的自定义验证规则。
有的时候我们需要指定参数来实现自定义验证规则
1 2 3 4 5 6 7 8 9 10 11 12 | $.validator.addMethod( 'notequal' , function (value, element, params ) { return value != params [ "va" ]; }); $.validator.unobtrusive.adapters.add( "notequal" , [ "va" ], function (options) { options.rules[ "notequal" ] = { va: options. params .va }; options.messages[ "notequal" ] = options.message; }); |
1 2 | <input type= "text" value= "" name= "cus" id= "cus" data-val= "true" data-val-notequal= "姓名不能够等于 123" data-val-notequal-va= "123" /> <span data-valmsg- for = "cus" data-valmsg-replace= "true" ></span> |
这样就可以完成比较复杂的自定义验证规则。
用jquery验证是否通过可以
$("#form-invoince").valid()
动态加载的表单无法验证问题
可以在动态注入表单之后按照如下的方式调用$.validator.unobtrusive.parse()对表单元素进行重新解析。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $( "body #updateContact" ).load( "home/update/001" , null , function () { $( "form" ).removeData( "validator" ).removeData( "unobtrusiveValidation" ); $.validator.unobtrusive.parse($( "form" )); }); /********* */ //动态加载表单后,重置验证,否则动态加载部分验证无效 var reloadValidator = function () { $( "form" ).removeData( "validator" ).removeData( "unobtrusiveValidation" ); $.validator.unobtrusive.parse($( "form" )); } /* 使用方法实例: $('#divdiv').load('url', null, reloadValidator); */ |
原文转自:https://www.cnblogs.com/super-ln/p/unobtrusive.html
另外一篇验证:https://www.cnblogs.com/artech/p/asp-net-mvc-validation-programming.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理