2013-07-22 19:07 4568人阅读 评论(2) 收藏 举报
 

目录(?)[+]

 

最近在学习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的更多相关文章

  1. MVC自定义验证 jquery.validate.unobtrusive

    MVC的验证 jquery.validate.unobtrusive 阅读目录 一.应用 二.验证规则 1.一.简单规则 2.二.复杂一点的规则 3.三.再复杂一点的规则(正则) 4.四.再再复杂一点 ...

  2. .net MVC内置js验证 jquery.validate.unobtrusive.js重置验证操作(备忘,找了很多次了)

    (function ($) { $.validator.unobtrusive.parseDynamicContent = function (selector) { //use the normal ...

  3. ASP.NET MVC异步验证是如何工作的03,jquery.validate.unobtrusive.js是如何工作的

    在上一篇"ASP.NET MVC异步验证是如何工作的02,异步验证表单元素的创建"中了解了ASP.NET异步验证是如何创建表单元素的,本篇体验jquery.validate.uno ...

  4. jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js)

    最近在学习asp.netMVC,发现其中的验证方式书写方便快捷,应用简单,易学好懂. 验证方式基于jQuery的validate 验证方式,也可以说是对jQuery validate的验证方式的扩展, ...

  5. 360浏览器下jquery.validate.unobtrusive的日期验证问题

    今天在招聘频道(job.cnblogs.com)遭遇这样一个问题——在360浏览器下,在一个表单验证中,虽然输入了有效的日期,却总是提示日期格式错误,见下图: 而在Chrome/Safari/Fire ...

  6. 改写jquery.validate.unobtrusive.js实现气泡提示mvc错误

    个人对于这个js.css不是很擅长,所以这个气泡提醒的样式网上找了下,用了这个http://www.cnblogs.com/wifi/articles/2918950.html当中的第一种写法. 对于 ...

  7. jquery.validate.unobtrusive.js实现气泡提示mvc错误

    改写jquery.validate.unobtrusive.js实现气泡提示mvc错误 个人对于这个js.css不是很擅长,所以这个气泡提醒的样式网上找了下,用了这个http://www.cnblog ...

  8. 使用tooltip显示jquery.validate.unobtrusive验证信息

    通过重写CSS实现使用tooltip显示jquery.validate.unobtrusive验证信息,效果如图: 1. 在ViewModel中定义验证规则 [Display(Name = " ...

  9. MVC3.0修改jquery.validate.unobtrusive.js实现气泡提示mvc错误

    CSS部分 <style type="text/css"> .hide {display:none;} .poptip { position: absolute; to ...

随机推荐

  1. 主要的核心思想是取cookie然后发查询请求,不需要浏览器做代理(转)

    需求是催生项目和推进项目的不竭动力. 背景: 最近,因为媳妇要做个B超检查,想着去大医院查查应该更放心,所以就把目标瞄准在A医院.早已耳闻A院一号难求万人空巷,所以把所有能接触到的机会都看了一遍,线下 ...

  2. 简单工厂 VS 工厂方法 VS 抽象工厂

    说到设计模式.自然少不了简单工厂模式.工厂方法和抽象工厂这三姐妹. 它们之间可谓是各有所长,术业专攻啊!这篇博客来简单的梳理一下三者之间的关系. 那么工厂又是什么意思呢?结合三者的特点,我觉得能够这样 ...

  3. Objective-C之成魔之路【9-类构造方法和成员变量作用域、以及变量】

    郝萌主倾心贡献,尊重作者的劳动成果.请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 构造方法 ...

  4. EJB_消息驱动发展bean

    消息驱动发展bean Java信息服务(Java MessageService) Java 信息服务(Java Message Service,简称 JMS)是用于訪问企业消息系统的开发商中立的API ...

  5. WITH AS

    表 id  pid  name获取 下面所有的子节点

  6. [Python网络编程]gevent httpclient以及网页编码

    之前看到geventhttpclient这个项目,https://github.com/gwik/geventhttpclient,官方文档说非常快,因为响应使用了C的解析,所以我一直想把这玩意用到项 ...

  7. 牟大哥:《App自我促销》连载2 直立人迁移走

    [谋哥每天一干货,第六十九篇] 前篇说到声音在远古时代.是一个奇妙的东西,它可以非常快地把信息传播到其它地方,突破了短距离. 然而能人的后代直立人学会了直立行走,他们開始走出非洲,到达遥远的中东.中国 ...

  8. ios ios7 取消控制拉升

    //推断是否ios7 取消控制拉升 if ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0) { self.edgesFo ...

  9. IOS本地化应用

    BK项目已完成7788,在项目的后期需要被翻译成多国语言版.为了适应全球多个国家使用多个存储. 应用本地化是分别对字符串.图片和 xib 或 storyboard 文件本地化,而传统的做法是对 xib ...

  10. CallContext和多线程

    前一段时间正好要在某个网页程序上开一个多线程调用多个组件的尝试,这些组件是有其他团队开发的(如:印度/俄罗斯),所以修改它们的代码看起来是不太现实的,但是,令人恼火的是他们的代码中大量的用到了AppC ...