在上一篇使用jQuery.Validate进行客户端验证(初级篇)中我介绍了为什么选用jQuery.Validate作为客户端的理由,同时也介绍了jQuery.Validate的基本用法以及中文验证消息的修改方法,今天的中级篇我将介绍下jQuery.Validate的一些常见的验证的使用方法。
jQuery.Validate为我们提供了3种验证编写方式,各有优缺点:
1、在input对象中书写class样式指定验证规则或属性验证规则:
如<input type=”text” class=”required”/>
最简单、最便捷,提示消息使用jQuery.Validate的内置的消息(自定义扩展验证规则也属于此项),但是由于是以样式名的方式进行验证,导致了日后修改必须找到相应的input对象,同时无法使用高级验证规则,具体说明请向下看
2、同第1条,这种验证规则方式也是在input对象中书写class样式,只不过书写的方式改为了JSON格式,但是这种方式提供了自定义验证消息的支持:
如<input type=”text” class="{required:true,minlength:5,,messages:{required:'请输入内容'}”/>
简单、方便,但个人认为有点臃肿,还是和第1条一样和相对应的input对象纠缠在一起,并且还增加消息自定义,使得input对象变的更大了,干扰了页面代码的阅读,但可以使用高级验证规则(实际就是将第3种JS以JSON的格式放到具体的class中
3、这种方式使用纯JS的方式:
如:
$().ready(function() {
$("#aspnetform").validate({
rules: {
name: "required",
email: {
required: true,
email: true
}
})
})
很好的解决了HTML和验证规则的分离,就是书写较为麻烦,需要单独写JS脚本,但好处是可以统一验证规范,将每个页面的验证规则都写在头部的脚本中,方便日后维护。
注意:以上3种验证方式的消息如果未指定都会默认调用内置的消息
在了解了jQuery.Validate为我们提供几种验证方式后,我们来具体分析下每个验证方式:
第一种,在input对象中书写class样式指定验证规则或属性验证规则,可以将该input需要的规则一次性写在里面(具体见页面Middle-1.aspx)。
如:
<asp:TextBox ID="txtAge" runat="server" class="required number" max="99" min="1"></asp:TextBox>
这段代码的意思是必须输入年龄字段,年龄必须是数字,同时必须在0-99范围内,使用起来很方便写几个属性就可以搞定,可以根据需求自由的组合验证规则。
但是就如上面说的许多高级的验证规则无法使用:
range(范围验证,这个就可以替代max,min),
rangeLength(长度范围验证,可以替代maxLength,minLength),
equalTo(比较验证,这个其实可以用,但是如果使用使用的是ASP.NET控件就不行,纯HTML控件可以。
看下代码,我想比较2次输入的密码是否一样时理论上可以这么写:
<asp:TextBox ID="txtRePwd" runat="server" TextMode="Password" CssClass="required" minlength="6" equalTo='#<%=txtPwd.ClientID %>'></asp:TextBox>
但是由于ASP.NET控件的机制问题,会把#<%=txtPwd.ClientID %>进行转译成#<%=txtPwd.ClientID %>这样就导致了要比较的ID无法正确获取,导致验证不成功。
但如果这么写就不会出现问题:
<input type=”password” class=”required” minlenght=”6” equalTo=”txtPwd”/>
)
第二种,同样书写class验证规则,只不过以JSON格式书写,可自定义验证消息,高级验证功能,JS验证规则的简化版(具体见页面Middle-2.aspx):
这种方式由于要以JSON的格式来编写规则,所以需要引用个单独的JS文件:jquery.metadata.js
具体书写代码格式如下:
<asp:TextBox ID="txtUid" runat="server" CssClass="{required:true,messages:{required:'不输入用户名你怎么登陆?'}}"></asp:TextBox>
<asp:TextBox ID="txtPwd" TextMode="Password" runat="server" CssClass="{required:true,minlength:6,messages:{required:'你不输入密码怎么行呢?',minlength:'密码太短啦至少6位'}}"></asp:TextBox>
具体意思分别是:必须输入用户名和必须输入密码同时长度至少6位。
注意:这边我重新定义了验证信息,这样就不用使用原先在jQuery.Validate中的内置的通用消息,可以指定更加人性化的消息,看下截图(可以对比下内置提示信息和自定义提示信息):
使用了这种方式后,我们就可以使用第一种验证方式中无法使用的一些验证规则了,如range:
<asp:TextBox ID="txtAge" runat="server" class="{required:true,number:true,range:[1,99],messages:{range:'您的年龄有问题把,得在1-99岁之间哦'}}"></asp:TextBox>
同样我这边也修改了具体具体的消息,而rangelength的用法也与这个类似我就不演示了。
同样很遗憾的,由于ASP.NET控件特性问题equalTo在这也不能使用,HTML还是有效的。
第三种,使用JS进行规则验证,可以使用所有验证规则,并且可以试HTML代码和验证规则很好的分离,方便日后维护(具体代码见Middle-3.aspx)
这种方式需要手写JS来编写验证的规则,具体的格式如下:
01 |
function InitRules() { |
05 |
<%=txtUid.UniqueID %>:
|
09 |
<%=txtPwd.UniqueID %>:
|
14 |
<%=txtRePwd.UniqueID %>:
|
18 |
equalTo:"#<%=txtPwd.ClientID %>"
|
20 |
<%=txtName.UniqueID %>:
|
24 |
<%=txtAge.UniqueID %>:
|
30 |
<%=txtEmail.UniqueID %>:
|
37 |
<%=txtPwd.UniqueID %>:
|
39 |
required:"不输入用户名你怎么登陆?"
|
41 |
<%=txtPwd.UniqueID %>:
|
43 |
required:"你不输入密码怎么行呢?",
|
46 |
<%=txtAge.UniqueID %>:
|
48 |
range:"您的年龄有问题把,得在1-99岁之间哦"
|
这种方式虽然可以使用所有的高级功能,验证规则也分离出来了,但是就是书写起来不简便,所以我的个人建议是如果不是要求很高的情况下,可以将如required,number,email等常规的简单的验证规则使用第1种验证方式,方便、快捷,只有当第1种无法实行的时候才使用这种方式,如equalTo(比较验证),remote(AJAX验证)等,这样相互结合效率是最高的。
到这边可能会有人奇怪了,因为在上面介绍这种JS验证方式的的时候有个小例子,需要把规则放入jQuery.Validate的方法中,否则制定的验证规则是无效的。
这里我就要说明下了,因为,这个例子中我使用的模拟一个项目的形式编写的,页面全部套用母版页,所以为了满足jQuery.Validate拦截form表单的方式,所以我在母版页中的<header>定义了一个变量用来存放每个页面中定义的验证规则:var opts = null;,这样根据HTML从上到下的解析方式首先opts被定义,然后在每个子页面被赋值,最后再返回母版页中的jQuery.Validate初始拦截form方法:
jQuery(document).ready(function() {
if (opts != undefined || opts != null) {
jQuery("#<%=form1.ClientID %>").validate(opts);
} else {
jQuery("#<%=form1.ClientID %>").validate();
}
});
如果在子页面里制定了规则,则按规则验证,没有规则则直接验证(这边的opts中包含的规则和具体的class规则不会有冲突,你可以将一部分规则写在opts中(remote,equalTo),另外的规则写在class中(required,number等)
以上就是使用jQuery.Validate进行客户端验证中级篇-上,具体的代码请下载源代码进行查看。
PS:1、本来想把中篇写成一篇的,但是写着写着发现东西实在太多,写在1篇里会太多,所以分成了2篇写,请见谅!
2、下一篇将对jQuery.Validate的使用过程中会碰到的问题进行介绍,如第2种验证方式更改验证规则所处的属性、指定验证信息显示位置等。
分享到:
相关推荐
jquery.validate.js jquery.validate.js
jquery.validate.1.9.0.min.js jquery.validate.1.12.0.min.js jquery.validate.1.13.1.min.js jquery.validate.1.16.0.min.js jquery.validate.1.14.0.min.js jquery.validate.1.15.1.min.js jquery.validate....
在本文中,我们将探讨如何使用jQuery Validate库进行客户端验证,并解释为什么在某些情况下不使用微软的验证控件。jQuery Validate是一个强大的JavaScript库,专门用于处理HTML表单验证,它为开发者提供了灵活且易于...
共两个文件:1、jquery.validate.js 原生jquery表单验证文件 2、jquery.validate.cn.js针对错误信息相关的中文提示(原生提示信息为英文)
jquery.validate.min.js jquery jquery验证插件 validate
综上所述,jquery.validate.js提供了一个非常便捷的方式来实现表单验证,通过引入相应的JS文件,并设置相应的验证规则和自定义信息,就可以轻松完成表单验证的任务。它不仅提高了开发效率,也增强了用户填写表单时的...
* http://docs.jquery.com/Plugins/Validation * * Copyright (c) 2006 - 2008 Jörn Zaefferer * * $Id: jquery.validate.js 6403 2009-06-17 14:27:16Z joern.zaefferer $ * * Dual licensed under the MIT...
微软的jquery.validate.unobtrusive.js验证插件,可以用来验证单选和多选框的.
jquery.validate.js表单验证 jquery.validate.messages_cn.js 表单验证中文提示
jQuery 验证控件 jquery.validate.js 使用说明 + 中文 API jQuery 验证控件 jquery.validate.js 是一个功能强大且广泛使用的 JavaScript 验证插件,旨在帮助开发者快速实现表单验证功能。下面是 jquery.validate....
jquery.validate插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来...
2. **性能优化**:避免对不必要的表单元素进行验证,合理设置验证范围,减少无效计算。 3. **错误样式**:可以使用`errorClass`来指定错误状态的CSS类,以便自定义样式。 总结,jQuery.validate.js凭借其便捷的...
使用jQuery Validate,开发者可以轻松定义验证规则,如必填项、邮箱格式、数字范围等,并自定义错误消息。 知识点详解: - **选择器**:jQuery 提供了一系列CSS选择器,使得选取DOM元素变得非常容易,如 `$("...
jquery.validate Validation .js验证框架 帮助 手册 文档.chm 版本 方面查询 (一)、可选项( options ) 1 (二)插件方法 (jQuery validation) 6 (三、四)选择器及实用工具 (jQuery validation) 7 四、实用工具...
jquery.validate.extend.js