(转)jQuery Validation Plugin客户端表单证验插件
jQuery Validation Plugin客户端表单验证插件
官方文档:http://jqueryvalidation.org/documentation/
官方demo:http://jquery.bassistance.de/validate/demo/
下载:http://jquery.bassistance.de/validate/jquery-validation-1.11.1.zip
jQuery Validation Plugin是一款客户端表单校验的插件,功能强大,使用简单。
先看一个简单的demo,例如一个标准的表单
<form class="cmxform" id="commentForm" method="get" action="">
<fieldset>
<legend>Please provide your name, email address (won't be published) and a comment</legend>
<p>
<label for="cname">Name (required, at least 2 characters)</label>
<input id="cname" name="name" minlength="2" type="text" required/>
</p>
<p>
<label for="cemail">E-Mail (required)</label>
<input id="cemail" type="email" name="email" required/>
</p>
<p>
<label for="curl">URL (optional)</label>
<input id="curl" type="url" name="url"/>
</p>
<p>
<label for="ccomment">Your comment (required)</label>
<textarea id="ccomment" name="comment" required></textarea>
</p>
<p>
<input class="submit" type="submit" value="Submit"/>
</p>
</fieldset>
</form>
<script>
$("#commentForm").validate();//仅一行js
</script>
上面表单的校验效果是什么呢?
1、当点击submit按钮之后,第一个校验失败的控件会获得焦点;如果按下submit按钮之前,最后一个获取焦点的控件,即不是第一个控件,同时也校验失败,那么此控件将在submit按钮之后获取焦点,而不是第一个控件获取焦点;
2、插件是懒加载的,在没有点击过submit的情况下,用户可以用tab建任意切换输入焦点,而不会获得任何校验失败的提示信息;
3、当一个控件校验失败后,错误信息会提示出来,但是当这个控件的输入合法后,校验信息会马上消失,不需要等待下一次submit;
下面来看看validate( [options ] )方法的参数:
submitHandler (default: native form submit)
当表单校验通过后回调的方法,有一个form参数。一般情况都是在回调方法中用ajax方式提交表单,如下:
$(".selector").validate({
submitHandler: function(form) {
$(form).ajaxSubmit();
}
});
当然也可以用标准的submit,因为form是一个dom参数,此时的submit()方法,不会再次触发校验
$(".selector").validate({
submitHandler: function(form) {
// do other things for a valid form
form.submit();
}
});
invalidHandler参数
当表单校验失败后回调的方法,有2个参数,第一个是event,第二个是validator自身
例如,显示错误信息并提示有多少个错误项
$(".selector").validate({
invalidHandler: function(event, validator) {
// 'this' refers to the form
var errors = validator.numberOfInvalids();
if (errors) {
var message = errors == 1
? 'You missed 1 field. It has been highlighted'
: 'You missed ' + errors + ' fields. They have been highlighted';
$("div.error span").html(message);
$("div.error").show();
} else {
$("div.error").hide();
}
}
});
ignore (default: ":hidden")参数
设置哪些控件是不需要校验的
例如:过滤所以.ignore的class属性的控件
$("#myform").validate({
ignore: ".ignore"
});
rules (default: rules are read from markup (classes, attributes, data))参数
描述具体的校验规则,从最上面的例子中可以看出,这个规则默认是从控件的属性中读取的,当然也可以自己设置。
设置方式是key/value键值对,其中key是控件的name,而value就是规则,此规则可以是字符串的值,也可以是某个json对象值
每个规则都可以有一个depends属性来设置依赖规则,例如一些条件必输项(当1选择,则2必输;当1未选择,则2非必输)
例如:
$(".selector").validate({
rules: {
// simple rule, converted to {required:true}
name: "required",
// compound rule
email: {
required: true,
email: true
}
}
});
下面的例子,将contract设置成必输和email格式,但email格式的规则,必须依赖#contactform_email:checked
$(".selector").validate({
rules: {
contact: {
required: true,
email: {
depends: function(element) {
return $("#contactform_email:checked")
}
}
}
}
});
messages (default: the default message for the method used)参数
设置错误信息,与规则1对1,每个错误信息可以是字符串,也可以是回调函数
如果是回调函数,则第一个参数是规则,第二个参数是输入控件本身,回调函数必须返回字符串
例如:
$(".selector").validate({
rules: {
name: {
required: true,
minlength: 2
}
},
messages: {
name: {
required: "We need your email address to contact you",
minlength: jQuery.format("At least {0} characters required!")
}
}
});
groups参数
groups参数可以把多个错误信息绑定成一个组,再利用errorPlacement 方法来设置错误信息显示的具体位置
如下列所示,将fname和lname绑定成一个组,组id是username,其中fname和lname是2个控件的name,而username是自定义的组id
绑定后,fname和lname的错误信息就会显示在一个位置上,而且不会同时显示;具体效果描述起来比较麻烦,自己尝试一下就可以明白
$("#myform").validate({
groups: {
username: "fname lname"
},
errorPlacement: function(error, element) {
if (element.attr("name") == "fname" || element.attr("name") == "lname" ) {
error.insertAfter("#lastname");
} else {
error.insertAfter(element);
}
}
});
onsubmit (default: true)
设置是否在submit的时候做校验,如果设置成false,则不作任何校验
$(".selector").validate({
onsubmit: false
});
onfocusout参数
设置控件(除checkboxes/radio buttons)在失去焦点的时候,是否进行校验
$(".selector").validate({
onfocusout: false
});
也可以设置一个回调函数,自己决定是否进行校验,回调函数有2个参数,event和element
onkeyup参数
设置控件在按键放开时,是否进行校验;同样接受boolean值,可以设置回调函数
onclick参数
设置checkboxes/radio buttons在按下时,是否进行校验;同样接受boolean值,可以设置回调函数
focusInvalid (default: true)参数
设置在submit后,是否自动把焦点设置到第一个控件或最后一个失去焦点的未校验通过控件
$(".selector").validate({
focusInvalid: false
});
focusCleanup (default: false)参数
设置当控件获取焦点后,是否清除错误信息;注意,要避免与focusInvalid一起使用,不然感觉就像没错误提示一样
$(".selector").validate({
focusCleanup: true
});
errorClass (default: "error")参数
使用这个class来创建错误信息label
$(".selector").validate({
errorClass: "invalid"
});
validClass (default: "valid")参数
当控件校验通过时,设置此class
$(".selector").validate({
validClass: "success"
});
errorElement (default: "label")参数
设置错误信息控件
$(".selector").validate({
errorElement: "em"
});
wrapper (default: window)参数
设置错误信息label的分割,例如错误信息:<label for="firstname" class="error" style="display: inline;">Please enter your firstname</label>
当设置如下分割后:
$(".selector").validate({
wrapper: "li"
});
错误信息变成:
<li style=""><label for="firstname" class="error" style="display: inline;">Please enter your firstname</label></li>
errorLabelContainer参数
将错误信息统一起来
$("#myform").validate({
errorLabelContainer: "#messageBox ul",
wrapper: "li",
submitHandler: function() { alert("Submitted!") }
});
如上设置后,错误信息将全部显示在#messageBox ul中,以li分割
errorContainer参数
设置一个额外的错误信息容器,但是这个容器中不会加入错误信息,但是这个容器本身,会随着错误信息的显示而显示,当错误信息全部消失,即校验全部通过时,这个容器也会消失;可以配合errorLabelContainer一起使用
$("#myform").validate({
errorContainer: "#messageBox1, #messageBox2",
errorLabelContainer: "#messageBox1 ul",
wrapper: "li", debug:true,
submitHandler: function() { alert("Submitted!") }
});
showErrors参数
这应该是个高级的参数,设置具体显示错误信息的方式,先看例子
$(".selector").validate({
showErrors: function(errorMap, errorList) {
$("#summary").html("Your form contains "
+ this.numberOfInvalids()
+ " errors, see details below.");
this.defaultShowErrors();
}
});
从例子中可以看出,是validator对象本身调用此回调函数,如果不处理具体的错误显示方式,可以调用this.defaultShowErrors()
errorMap参数是一个对象,errorList是一个数组,记录的都是错误信息,从下图中来直观的了解其存储的具体值,是chrome的变量查看

errorPlacement (default: Places the error label after the invalid element)参数
这个前面遇到过,就是设置错误信息的显示位置,例如在一个table布局的form中,将错误信息显示到下一个td中
$("#myform").validate({
errorPlacement: function(error, element) {
error.appendTo( element.parent("td").next("td") );
}
});
success参数
设置字符串时,表示校验通过的错误信息设置的class属性
$("#myform").validate({
success: "valid",
submitHandler: function() { alert("Submitted!") }
});
设置成回调函数,有2个参数,第一个label表示错误信息对象,第二个element表示对应的输入控件对象
如下面例子,在校验通过时,给错误信息label设置class并且将信息改成OK!
$("#myform").validate({
success: function(label) {
label.addClass("valid").text("Ok!")
},
submitHandler: function() { alert("Submitted!") }
});
highlight (default: Adds errorClass (see the option) to the element)参数
设置如何高亮显示校验失败的控件,回调函数有3个参数,element表示当前控件,errorClass和validClass就不用解释了
例如,将校验失败的控件消退再显示:
$(".selector").validate({
highlight: function(element, errorClass) {
$(element).fadeOut(function() {
$(element).fadeIn();
});
}
});
或者设置errorClass,其实默认就是这么操作
$(".selector").validate({
highlight: function(element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
$(element.form).find("label[for=" + element.id + "]")
.addClass(errorClass);
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
$(element.form).find("label[for=" + element.id + "]")
.removeClass(errorClass);
}
});
unhighlight (default: Removes the errorClass)参数
同上的设置方式,只是在控件校验通过时,取消高亮
ignoreTitle (default: false)参数
是否取消从title属性中读取值,好像在Google Toolbar中会有一些问题,需要设置成true;默认是false,这个笔者也没具体研究过,有研究清楚的欢迎留言。
到此,插件的构造方法和参数就全部翻译完了,但是还有很多没有翻译,待下一篇博文吧!
(转)jQuery Validation Plugin客户端表单证验插件的更多相关文章
- 表单验证的validate.js插件---jQuery Validation Plugin
早上在公交车上看了一个关于慕课网的教程<表单验证的validate.js插件---jQuery Validation Plugin>,正好可以用到自己近期开发简易微博的注册页面和登录页面, ...
- jQuery Validation Plugin学习
http://blog.csdn.net/violet_day/article/details/14109261 jQuery Validation Plugin Demo 一.默认校验规则 (1)r ...
- jquery.form.js+jquery.validation.js实现表单校验和提交
一.jquery引用 主要用到3个js: jquery.js jquery.form.js jquery.validation.js 另外,为了校验结果提示本地化,还需要引入jquery.vali ...
- jQuery Validation Plugin
使用方式很简单,简单测试代码如下: <html> <head> <script type="text/javascript" src="./ ...
- jQuery html5Validate基于HTML5表单验证插件
更新于2016-02-25 前面提到的新版目前线上已经可以访问: http://mp.gtimg.cn/old_mp/assets/js/common/ui/Validate.js demo体验狠狠地 ...
- jquery validation plugin 使用
<!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Prope ...
- 使用Jquery.form.js ajax表单提交插件弹出下载提示框
现象: 使用jquery的from做ajax表单提交的时候,后台处理完毕返回json字符串,此时浏览器提示下载一个json文件而不是在success里面继续解析该json对象. 具体的原因: 浏览器兼 ...
- JQuery 表单验证--jquery validation
jquery validation,表单验证控件 官方地址 :http://jqueryvalidation.org/ jquery表单验证 默认值校验规则 jquery表单验证 默认的提示 < ...
- 使用jquery.validation+jquery.poshytip做表单验证--未完待续
jqueryValidate的具体使用方法很多,这里就不在赘述,这一次只谈一下怎样简单的实现表单验证. 整片文章目的,通过JQvalidation按表单属性配置规则验证,并将验证结果通过poshyti ...
随机推荐
- Delphi 串口打印机打印
一.硬件准备 打印机: 打印机必须具有串口,没有标配串口的打印机,必须购买串口卡,串口卡的型号请参考随机<操作手册>. 计算机: 计算机必须具有串口,计算机通常具有两个串口:COM1和CO ...
- html中window对象top 、self 、parent 等属性
window对象用法: http://www.w3school.com.cn/htmldom/dom_obj_window.asp top 属性返回最顶层的先辈窗口. 该属性返回对一个顶级窗口的只读引 ...
- jquery上传控件个人使用
转了一篇jquery的上传控件使用博文,但是,经过测试貌似不行,自己研究了一下,效果实现.记下,以后使用. 下载“Uploadify”,官方版本为php的,很多文件不需要,删除带.php的文件. &l ...
- phpcms v9联动菜单实现筛选
<!--初始化init--> {php $theurl = "index.php?m=content&c=index&a=lists&catid=$cat ...
- PHPCMS v9 导航显示二级菜单,显示相邻栏目,内容页显示二级栏目
导航显示二级栏目 <div class="menu">{pc:content action="category" catid="0&quo ...
- 使用Statement执行sql语句
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java ...
- codevs 1068 乌龟棋
题目描述 Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一 的起点,第N格是终点,游戏要求玩家控制 ...
- SVM的点滴
SVM 1. 普通SVM的分类函数可表示为: 其中ai为待优化参数,物理意义即为支持向量样本权重,yi用来表示训练样本属性,正样本或者负样本,为计算内积的核函数,b为待优化参数. 其优化目标函数为: ...
- rsync同步目录及同步文件
最简单的只读同步工作. 一,服务端的配置 1,安装rsync(阿里云默认已有此程序) 略 2,生成文件rsyncd.conf,内容如下: #secrets file = /etc/rsyncd.sec ...
- Xamarin Add Mac
右键IOS项目,设置为启动项目,点击启动(F5)弹出如下提示 提示开启远程访问权限,按照提示照做即可 在mac端 进入系统偏好设置 双击选择共享 打开远程登陆,允许所有用户访问 设置完成后点击ok 弹 ...