MVC的验证 jquery.validate.unobtrusive
最近在学习asp.netMVC,发现其中的验证方式书写方便快捷,应用简单,易学好懂。
验证方式基于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 <div class="validation-summary-valid" data-valmsg summary="true">
2 <ul>
3 <li style="display: none"></li>
4 </ul>
5 </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 <div class="control-group">
2 <label class="control-label">
3 *密码
4 </label>
5 <div class="controls">
6 <input type="password" name="pwd" id="pwd" data-val="true" data-val-required="密码不能为空!" />
7 <span data-valmsg-for="pwd" data-valmsg-replace="true"></span>
8 </div>
9 </div>
10 <div class="control-group">
11 <label class="control-label">
12 *确认密码
13 </label>
14 <div class="controls">
15 <input type="password" name="Password1" id="Password1" data-val="true" data-val-required="确认密码不能为空!" data-val-equalto="密码和确认密码不匹配。" data-val-equalto-other="pwd" />
16 <span data-valmsg-for="Password1" data-valmsg-replace="true"></span>
17 </div>
18</div>
2.data-val-length 字符的长度 ,data-val-length-max表示最大字符数 data-val-length-min 表示最小字符数
1 <div class="control-group">
2 <label class="control-label">
3 *密码
4 </label>
5 <div class="controls">
6 <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 个字符。" />
7 <span data-valmsg-for="pwd" data-valmsg-replace="true"></span>
8 </div>
9 </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 <div class="controls">
2 <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}" />
3 <span data-valmsg-for="regex" data-valmsg-replace="true"></span>
4 </div>
四、再再复杂一点的规则(ajax)
有点时候我们需要ajax来验证规则,比如我们常见的检查用户名是否可用
data-val-remote可以帮助我们实现功能,data-val-remote-url表示ajax验证的路径,直接返回true or false 即可完成验证。
1 <div class="controls">
2 <input type="text" name="loginName" data-val="true" data-val-required="登录名不能为空!" data-val-remote="已经被注册,请选择其他登录名称!" data-val-remote-url="checkuserid.aspx" />
3 <span data-valmsg-for="loginName" data-valmsg-replace="true"></span>
4 </div>
五、终极验证规则(自定义验证规则)
虽然以上验证规则足够可以我们使用,但是可能需要我们自定义的验证规则。
熟悉jQuery validate的验证方式知道可以添加自定义的验证规则,因为此验证规则是对jQuery validate的扩展,所以需要在jQuery validate的基础上进行自定义验证。
1)添加jQuery validate自定义验证方法
判断值是否等于“123”
1 $.validator.addMethod('notequal', function (value, element, params)
2 {
3 return value != "123";
4 });
2)添加扩展方法的自定义方法
1 $.validator.unobtrusive.adapters.add("notequal", function (options)
2 {
3 options.rules["notequal"] = {
4
5 };
6 options.messages["notequal"] = options.message;
7 });
3)data-val-notequal="姓名不能等于 123"
1 <input type="text" value="" name="cus" id="cus" data-val="true" data-val-notequal="姓名不能等于 123"/>
2 <span data-valmsg-for="cus" data-valmsg-replace="true"></span>
这样即可完成简单的自定义验证规则。
有的时候我们需要指定参数来实现自定义验证规则
1 $.validator.addMethod('notequal', function (value, element, params)
2 {
3 return value != params["va"];
4 });
5
6 $.validator.unobtrusive.adapters.add("notequal", ["va"], function (options)
7 {
8 options.rules["notequal"] = {
9 va: options.params.va
10 };
11 options.messages["notequal"] = options.message;
12 });
1 <input type="text" value="" name="cus" id="cus" data-val="true" data-val-notequal="姓名不能够等于 123" data-val-notequal-va="123"/>
2 <span data-valmsg-for="cus" data-valmsg-replace="true"></span>
这样就可以完成比较复杂的自定义验证规则。
MVC的验证 jquery.validate.unobtrusive的更多相关文章
- MVC自定义验证 jquery.validate.unobtrusive
MVC的验证 jquery.validate.unobtrusive 阅读目录 一.应用 二.验证规则 1.一.简单规则 2.二.复杂一点的规则 3.三.再复杂一点的规则(正则) 4.四.再再复杂一点 ...
- .net MVC内置js验证 jquery.validate.unobtrusive.js重置验证操作(备忘,找了很多次了)
(function ($) { $.validator.unobtrusive.parseDynamicContent = function (selector) { //use the normal ...
- ASP.NET MVC异步验证是如何工作的03,jquery.validate.unobtrusive.js是如何工作的
在上一篇"ASP.NET MVC异步验证是如何工作的02,异步验证表单元素的创建"中了解了ASP.NET异步验证是如何创建表单元素的,本篇体验jquery.validate.uno ...
- jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js)
最近在学习asp.netMVC,发现其中的验证方式书写方便快捷,应用简单,易学好懂. 验证方式基于jQuery的validate 验证方式,也可以说是对jQuery validate的验证方式的扩展, ...
- 360浏览器下jquery.validate.unobtrusive的日期验证问题
今天在招聘频道(job.cnblogs.com)遭遇这样一个问题——在360浏览器下,在一个表单验证中,虽然输入了有效的日期,却总是提示日期格式错误,见下图: 而在Chrome/Safari/Fire ...
- 改写jquery.validate.unobtrusive.js实现气泡提示mvc错误
个人对于这个js.css不是很擅长,所以这个气泡提醒的样式网上找了下,用了这个http://www.cnblogs.com/wifi/articles/2918950.html当中的第一种写法. 对于 ...
- jquery.validate.unobtrusive.js实现气泡提示mvc错误
改写jquery.validate.unobtrusive.js实现气泡提示mvc错误 个人对于这个js.css不是很擅长,所以这个气泡提醒的样式网上找了下,用了这个http://www.cnblog ...
- 使用tooltip显示jquery.validate.unobtrusive验证信息
通过重写CSS实现使用tooltip显示jquery.validate.unobtrusive验证信息,效果如图: 1. 在ViewModel中定义验证规则 [Display(Name = " ...
- MVC3.0修改jquery.validate.unobtrusive.js实现气泡提示mvc错误
CSS部分 <style type="text/css"> .hide {display:none;} .poptip { position: absolute; to ...
随机推荐
- Windows远程桌面连接Ubuntu 14.04 (转)
由于xrdp.gnome和unity之间的兼容性问题,在Ubuntu 14.04版本中仍然无法使用xrdp登陆gnome或unity的远程桌面,现象是登录后只有黑白点为背景,无图标也无法操作.与13. ...
- IT增值服务,客户案例(一)--山东青岛在职人士,2年.Net经验,转Java开发半年
客户总体情况:2年.Net开发经验,2014年刚刚转Java半年.对Java的若干问题不是非常清楚,仅仅是对JSP/Servlet/JavaBean Spring.SpringMVC.Mybatis有 ...
- Java对于私有变量“反思暴力”技术
(1)这两个类:(在相同的包装可以是) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGxnZW4xNTczODc=/font/5a6L5L2T/font ...
- 关于读style元素定义样式表兼容性
<span style="font-size:18px;"></span><pre name="code" class=" ...
- javascript---在自由落体实现
实现一些简单的物业自由落体需要理解: clientHeight:浏览器客户机的整体高度 offsetHeight:物(实例div)高低 offsetTop:从对象client最顶层的距离 简单demo ...
- 领域驱动设计(DDD)部分核心概念的个人理解(转)
领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...
- Lua学习 1) —— Android呼叫变量值和分配
2014-07-08 Lua脚本语言,嵌入在App中扩展开发是非常不错的. 关于Android与Lua的环境搭配,我直接下载别人编好的.so与.jar(放到libs下就好了) 以下简介一下Androi ...
- Morphia采用
Morphia配合mongoDB喜欢Hibernate关系型数据库.也能够想到Morphia于MongoDB它调用上述的基础上,mongoDB语法. 于java直接通话Morphia的api它会变得更 ...
- 使用crontab创建 linux 系统定时任务#
任务1: 每隔1分钟,运行一次 /home/sn/yeelink.sh文件 ,用于上传数据到www.yeelink.net 1. 先在当时目录里面创建一个cronfile文件 vim cronfile ...
- Windows Phone 8 - 建立App专属联络人资讯(ContactStore)
原文:Windows Phone 8 - 建立App专属联络人资讯(ContactStore) 在WP7的时候介绍了如何操作联络人的功能,例如:<Windows Phone 7 - 存取联络人与 ...