jquery.Validation是一款优秀的jquery插件,它能对客户端表单进行验证,并且提供了许多可以定制的属性和方法,良好的扩展性。在以前做过的几个项目中,我都用到了Validation,现在结合实际情况,我把项目中经常要用到的验证整理成一个实例DEMO,本文就是通过讲解这个实例来理解Validation的应用。
本实例涉及到的验证有:
用户名:长度、字符验证,重复性ajax验证(是否已存在)。
密码:长度验证,重复输入密码验证。
邮件:邮件地址验证。
固定电话:中国大陆固定电话号码验证。
手机号:中国大陆手机号码验证。
网址:网站URL地址验证。
日期:标准日期格式验证。
数字:整数、正整数验证,数字范围验证。
身份证:大陆身份证号码验证。
邮政编码:大陆邮政编码验证。
文件:文件类型(后缀)验证,如只允许上传图片。
IP:IP地址验证。
验证码:验证码ajax验证。
使用方法:
1、准备jquery和jquery.validate插件
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
2、准备CSS样式
页面样式我不再详述,大家可以自己写个样式,也可以参看DEMO的页面源代码。这里要强调的关键样式是要显示验证信息的样式:
label.error{color:#ea5200; margin-left:4px; padding:0px 20px;
background:url(images/unchecked.gif) no-repeat 2px 0 }
label.right{margin-left:4px; padding-left:20px; background:
url(images/checked.gif) no-repeat 2px 0}
3、XHTML
<form id="myform" action="#" method="post">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="mytable">
<tr class="table_title">
<td colspan="2">jquery.validation 表单验证</td>
</tr>
<tr>
<td width="22%" align="right">用户名:</td>
<td><input type="text" name="user" id="user" class="input required" />
<p>用户名为3-16个字符,可以为数字、字母、下划线以及中文</p></td>
</tr>
<tr>
<td align="right">密码:</td>
<td><input type="password" name="pass" id="pass" class="input required" />
<p>最小长度:6 最大长度:16</p>
</td>
</tr>
<tr>
<td align="right">确认密码:</td>
<td><input type="password" name="repass" class="input required" /></td>
</tr>
</table>
</form>
限于篇幅,本文的只截取了实例中HTML代码的一小部分,详细XHTML代码可参看页面DEMO源代码。值得一提的是,我在给了标签一个“required”类样式,下文将会提到它的作用。
4、应用Validation插件
调用Validation插件的方法:
$(function(){
var validate = $("#myform").validate({
rules:{
......
},
messages:{
......
}
})
});
rules:定义验证规则,key:value的形式,key是要验证的元素,value可以是字符串或对象。比如验证用户名的长度和不允许为空:
rules:{
user:{
required:true,
maxlength:16,
minlength:3
},
......
}
其实我们在XHTML代码中可以直接指定input的class属性为required,作用是不允许为空,这样在JS部分就不用重复写了。同样的验证email等,直接设置input的class属性为email。
messages:定义提示信息,key:value的形式key是要验证的元素,值是字符串或函数,当验证不通过时提示的信息。
messages:{
user:{
required:"用户名不能为空!",
remote:"该用户名已存在,请换个其他的用户名!"
},
......
}
本例中涉及的验证JS就是按照上面的规则进行编写的,Validation插件封装了好多基本的验证方式,如下:
required:true 必须有值,不能为空
remote:url 可以用于判断用户名等是否已经存在,服务器端输出true,表示验证通过
minlength:6 最小长度为6
maxlength:16 最大长度为16
rangelength:长度范围
range:[10,20] 数值范围在10-20之间
email:true 验证邮件
url:true 验证URL网址
dateISO:true 验证日期格式'yyyy-mm-dd'
digits:true 只能为数字
accept:'gif|jpg' 只接受gif或jpg为后缀的图片。常用于验证文件的扩展名
equalTo:'#pass' 与哪个表单字段的值相等,常用于验证重复输入密码
此外,我还根据项目实际情况扩展了几个验证,验证的代码在validate-ex.js,使用前需要先加载这个JS。它能提供以下验证:
userName:true 用户名只能包括中文字、英文字母、数字和下划线
isMobile:true 手机号码验证
isPhone:true 大陆手机号码验证
isZipCode:true 邮政编码验证
isIdCardNo:true 大陆身份证号码验证
ip:true IP地址验证
以上提供的验证方式基本上满足我们在大多数项目中的需求。如果其他特殊验证需求,可以扩展,方法如:
jQuery.validator.addMethod("isZipCode", function(value, element) {
var zip = /^[0-9]{6}$/;
return this.optional(element) || (zip.test(value));
}, "请正确填写您的邮政编码!");
疑难问题解决
1、在项目中遇到在验证用户名是否存在时,发现不支持中文输入验证。我的解决办法是给用户名进行encodeURIComponent编码,后台PHP再对接受的值进行urldecode解码
user:{
remote: {
url: "chk_user.php",
type: "post",
data: { user: function() {
return encodeURIComponent($("#user").val());
}}
}
},
服务端验证程序chk_user.php的代码:
<?php
$request = urldecode(trim($_POST['user']));
usleep(150000);
$users = array('月光光', 'jeymii', 'Peter', 'helloweba');
$valid = 'true';
foreach($users as $user) {
if( strtolower($user) == $request )
$valid = 'false';
}
echo $valid;
?>
我使用的服务端程序是PHP,您也可以使用ASP,ASP.NET,JAVA等。此外本例为了演示,用户名数据是直接写在服务端的,真正的应用是从数据库里取出的用户名数据,来和接收客户端的数据进行对比。
2、在验证checkbox和radio控件时,验证信息不会出现在最后的控件文本后面,而是直接跟在第一个控件的后面,不符合我们的要求。
解决办法是在validate({})追加以下代码:
errorPlacement: function(error, element) {
if ( element.is(":radio") )
error.appendTo ( element.parent() );
else if ( element.is(":checkbox") )
error.appendTo ( element.parent() );
else if ( element.is("input[name=captcha]") )
error.appendTo ( element.parent() );
else
error.insertAfter(element);
}
3、重置表单。Form表单原始的重置方法是reset自带
<input type="reset" value="重 置" />
点击“重置”按钮,表单元素将会重置,但是再运行Validation插件后,验证的提示信息并没重置,就是那些提示信息没有消失。感谢Validation提供了重置表单的方法:resetForm()
$("input:reset").click(function(){
validate.resetForm();
});
其他
1、本例中还涉及到验证码的判断方法,也是通过异步生成验证码和判断是否输入正确的,可以查看源码,官方网单独提供了一个实例:http://jquery.bassistance.de/validate/demo/captcha/
2、更多验证方法的应用请查看http://docs.jquery.com/Plugins/Validation/
相关推荐
jQuery Validation表单验证插件实例合集,是锋利的JQuery第七章中的一个典型实例,一步步向大家讲解如何使用基于jQuery的表单验证插件jquery.validate.js和jquery.validate.messages_cn.js的使用方法,一共包含了7个...
表单验证在Web开发中扮演着...以下是对Validation插件应用实例的详细讲解。 首先,我们引入必要的库文件,包括jQuery核心库和Validation插件: ```html <script type="text/javascript" src="js/jquery.js"></script> ...
`validationEngine`是一款基于jQuery的表单验证插件,它能帮助开发者轻松地实现对用户输入数据的实时验证,提供了一种美观且直观的方式来确保表单数据的有效性。本实例将详细讲解如何使用`validationEngine`插件进行...
这个压缩包“基于PHP的一个PHP+Ajax表单数据验证插件实例源码.zip”提供了一个实际的示例,展示了如何在PHP环境中使用Ajax进行表单数据的验证。下面将详细讲解这个知识点。 1. **PHP基础**:PHP(Hypertext ...
3. **验证插件validation.html**:这个章节可能涉及使用jQuery实现表单验证,比如使用jQuery Validate插件。该插件允许开发者方便地添加验证规则,对用户输入进行实时检查,提升用户体验。 4. **样式插件...
2. **工具**:意味着这是一个可以用于实际项目中的实用工具,可能是一个库或者插件,用于简化和规范化JavaScript表单验证。 **文件名分析:** "formValidate.js" 这个名字暗示了一个用于表单验证的JavaScript文件...
客户端验证通常使用JavaScript或HTML5的表单验证,这种验证方式快速且用户体验良好,但安全性较低,因为可以被轻易绕过。服务器端验证则是必不可少的安全层,它能确保所有数据在进入数据库或执行业务逻辑前都符合...
如jQuery UI提供了丰富的用户界面组件,而jQuery Validation则用于表单验证。 总的来说,《锋利的jQuery实例》涵盖了从基本操作到高级应用的全方位教程,通过实例讲解,让读者能够快速上手并精通jQuery。无论是初学...
jQuery还包含了许多便利的插件和扩展,例如用于表单验证的jQuery Validation Plugin,用于图片轮播的jQuery Carousel,以及用于响应式设计的jQuery Mobile等。这些插件丰富了jQuery的功能,满足了各种开发需求。 ...
jQuery社区提供了大量插件,如轮播图插件(carousel)、日期选择器(date picker)、表单验证(form validation)等,这些插件丰富了jQuery的功能,满足各种项目需求。 七、链式操作 jQuery的另一个特色是链式操作...
jQuery拥有庞大的插件生态系统,如用于图片轮播的jQuery Cycle,表单验证的jQuery Validation,以及各种滑动菜单和弹窗插件等,这些都极大地扩展了jQuery的功能。 **jQuery与JavaScript的关系** jQuery是建立在...
课程会讲解如何查找和引入第三方jQuery插件,如用于轮播图的Slick插件,或用于表单验证的jQuery Validation插件。同时,也会简单介绍插件的工作原理和如何根据需求定制自己的jQuery插件。 教案中会包含每个主题的...
3. **Interceptor配置**: 定义拦截器链,如Params拦截器用于参数绑定,Validation拦截器进行表单验证。 **三、拦截器(Interceptors)** Struts2的核心特性之一,拦截器允许在Action执行前后插入额外的功能,如日志...
同时,本章也会介绍Struts2的插件系统,如Tiles插件用于页面布局,Validation插件用于表单验证,以及Freemarker或Velocity模板引擎的集成,这些插件极大地丰富了Struts2的功能。 第21章:Struts2的高级特性和实战 ...
2. jQuery Validation Plugin:一个流行的jQuery插件,简化表单验证的实现。 3. AngularJS/React/Vue等框架:内置的表单验证机制,可自定义错误处理。 4. 后端验证:服务器端验证可以防止恶意数据提交,返回的错误...
常见的拦截器有Params(处理参数)、Validation(进行表单验证)、SessionAware(检查session状态)等。 6. **OGNL(Object-Graph Navigation Language)**:Struts2默认使用OGNL作为表达式语言,用于在Action和视图...
Struts 2是一款强大的Java Web开发框架,它基于MVC(Model-View-Controller)设计模式,用于构建高效、可维护的Web应用。...书中的实例讲解有助于理论知识的巩固和实践经验的积累,对于提升Java Web开发技能大有裨益。
4. **验证框架**:介绍Struts内置的表单验证机制,包括基于XML的Validation和基于Java的Validator插件,以及如何自定义验证规则。 5. **异常处理**:学习如何通过Struts的异常处理机制来捕获和管理应用程序可能出现...