(转)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 ...
随机推荐
- 解决Windows服务1053错误方法
WCF使用MSMQ绑定寄宿在Windows服务上,但启动服务时出现1053错误 在网上搜索了N多解决方案,都是比较高深的扯到原理和系统bug等问题 看了看到最后也没有解决,最终我决定使用一个比较山寨的 ...
- JS函数定义与匿名函数的调用
一.函数声明.函数表达式.匿名函数 函数声明:function fnName () {…};使用function关键字 声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName ...
- Apache的配置
Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改. 主站点的配置(基本配置) (1) 基本配置: ServerRoot "/mnt/s ...
- Facebook和Google如何激发工程师的创造力
http://taiwen.lofter.com/post/664ff_ad8a15 今天终于“朝圣”了两个伟大的公司——Facebook和Google,对创造力和驱动力的来源有了更多的理解,尤其是对 ...
- 转:enum与typedef enum的用法
来自:http://blog.sina.com.cn/s/blog_817a5eb6010146ad.html 作者:于超峰 在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#defi ...
- Android 中HttpURLConnection与HttpClient的简单使用
1:HttpHelper.java public class HttpHelper { //1:标准的Java接口 public static String getStringFromNet1(Str ...
- webserver and application server
http://www.diffen.com/difference/Application_Server_vs_Web_Server http://www.differencebetween.com/d ...
- DUBBO安装配置注意事项
DUBBO安装配置注意事项 参考URL:http://blog.csdn.net/lichunan/article/details/40349645 ====== 管理端: 记得更改TOMCAT的端口 ...
- javascript 误用this指针 的情况
理解了this指针后,我们再来看看一些很容易误用this指针的情况. 示例1——内联式绑定Dom元素的事件处理函数 <script type="text/javascript" ...
- EA强大的画图工具---设计数据库表格
http://blog.csdn.net/senior_lee/article/details/30272169?utm_source=tuicool 关于EA这个优秀的软件是从师哥哪里听来的,自己瞎 ...