jQuery Validate表单验证深入学习


Posted in Javascript onDecember 18, 2015

之前一篇文章介绍了jQuery Validate表单验证入门的基础知识,详细内容参见《jQuery Validate表单验证入门学习》今天这篇文章深入学习jQuery Validate表单验证,以下就是文章的全部内容:

1、用其他方式替代默认的 SUBMIT

$().ready(function() {
 $("#signupForm").validate({
  submitHandler:function(form){
   alert("submitted"); 
   form.submit();
  } 
 });
});

使用 ajax 方式

$(".selector").validate({  
 submitHandler: function(form) 
 {  
  $(form).ajaxSubmit();  
 } 
 })

可以设置 validate 的默认值,写法如下:

$.validator.setDefaults({
 submitHandler: function(form) { alert("submitted!");form.submit(); }
});

如果想提交表单, 需要使用 form.submit(),而不要使用 $(form).submit()。
2、debug,只验证不提交表单
如果这个参数为true,那么表单不会提交,只进行检查,调试时十分方便。

$().ready(function() {
 $("#signupForm").validate({
  debug:true
 });
});

如果一个页面中有多个表单都想设置成为 debug,则使用:

$.validator.setDefaults({
 debug: true
})

3、ignore:忽略某些元素不验证
ignore: ".ignore"
4、更改错误信息显示的位置
errorPlacement:Callback
指明错误放置的位置,默认情况是:error.appendTo(element.parent());即把错误信息放在验证的元素后面。

errorPlacement: function(error, element) { 
 error.appendTo(element.parent()); 
}

实例

<tr>
 <td class="label"><label id="lfirstname" for="firstname">First Name</label></td>
 <td class="field"><input id="firstname" name="firstname" type="text" value="" maxlength="100" /></td>
 <td class="status"></td>
</tr>
<tr>
 <td style="padding-right: 5px;">
  <input id="dateformat_eu" name="dateformat" type="radio" value="0" />
  <label id="ldateformat_eu" for="dateformat_eu">14/02/07</label>
 </td>
 <td style="padding-left: 5px;">
  <input id="dateformat_am" name="dateformat" type="radio" value="1" />
  <label id="ldateformat_am" for="dateformat_am">02/14/07</label>
 </td>
 <td></td>
</tr>
<tr>
 <td class="label"> </td>
 <td class="field" colspan="2">
  <div id="termswrap">
   <input id="terms" type="checkbox" name="terms" />
   <label id="lterms" for="terms">I have read and accept the Terms of Use.</label>
  </div>
 </td>
</tr>

errorPlacement: function(error, element) {
 if ( element.is(":radio") )
  error.appendTo( element.parent().next().next() );
 else if ( element.is(":checkbox") )
  error.appendTo ( element.next() );
 else
  error.appendTo( element.parent().next() );
}

代码的作用是:一般情况下把错误信息显示在 <td class="status"></td> 中,如果是 radio 则显示在 <td></td> 中,如果是 checkbox 则显示在内容的后面。
参数 类型 描述 默认值
errorClass String 指定错误提示的 css 类名,可以自定义错误提示的样式。 "error"
errorElement String 用什么标签标记错误,默认是 label,可以改成 em。 "label"
errorContainer Selector 显示或者隐藏验证信息,可以自动实现有错误信息出现时把容器属性变为显示,无错误时隐藏,用处不大。
errorContainer: "#messageBox1, #messageBox2" 
errorLabelContainer Selector 把错误信息统一放在一个容器里面。 
wrapper String 用什么标签再把上边的 errorELement 包起来。 
一般这三个属性同时使用,实现在一个容器内显示所有错误提示的功能,并且没有信息时自动隐藏。
errorContainer: "div.error",
errorLabelContainer: $("#signupForm div.error"),
wrapper: "li"
5、更改错误信息显示的样式
设置错误提示的样式,可以增加图标显示,在该系统中已经建立了一个 validation.css,专门用于维护校验文件的样式。

input.error { border: 1px solid red; }
label.error {
 background:url("./demo/images/unchecked.gif") no-repeat 0px 0px;

 padding-left: 16px;

 padding-bottom: 2px;

 font-weight: bold;

 color: #EA5200;
}
label.checked {
 background:url("./demo/images/checked.gif") no-repeat 0px 0px;
}

6、每个字段验证通过执行函数
success:String,Callback
要验证的元素通过验证后的动作,如果跟一个字符串,会当作一个 css 类,也可跟一个函数。

success: function(label) {
 // set   as text for IE
 label.html(" ").addClass("checked");
 //label.addClass("valid").text("Ok!")
}

添加 "valid" 到验证元素,在 CSS 中定义的样式 <style>label.valid {}</style>。
success: "valid"
7、验证的触发方式修改
下面的虽然是 boolean 型的,但建议除非要改为 false,否则别乱添加。
触发方式 类型 描述 默认值
onsubmit Boolean 提交时验证。设置为 false 就用其他方法去验证。 true
onfocusout Boolean 失去焦点时验证(不包括复选框/单选按钮)。 true
onkeyup Boolean 在 keyup 时验证。 true
onclick Boolean 在点击复选框和单选按钮时验证。 true
focusInvalid Boolean 提交表单后,未通过验证的表单(第一个或提交之前获得焦点的未通过验证的表单)会获得焦点。 true
focusCleanup Boolean 如果是 true 那么当未通过验证的元素获得焦点时,移除错误提示。避免和 focusInvalid 一起用。 false

// 重置表单
$().ready(function() {
 var validator = $("#signupForm").validate({
  submitHandler:function(form){
   alert("submitted"); 
   form.submit();
  } 
 });
 $("#reset").click(function() {
  validator.resetForm();
 });

});

8、异步验证
remote:URL
使用 ajax 方式进行验证,默认会提交当前验证的值到远程地址,如果需要提交其他的值,可以使用 data 选项。

remote: "check-email.php"
remote: {
 url: "check-email.php",  //后台处理程序
 type: "post",    //数据发送方式
 dataType: "json",   //接受数据格式 
 data: {      //要传递的数据
  username: function() {
   return $("#username").val();
  }
 }
}

远程地址只能输出 "true" 或 "false",不能有其他输出。
9、添加自定义校验
addMethod:name, method, message
自定义验证方法

// 中文字两个字节
jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {
 var length = value.length;
 for(var i = 0; i < value.length; i++){
  if(value.charCodeAt(i) > 127){
   length++;
  }
 }
 return this.optional(element) || ( length >= param[0] && length <= param[1] ); 
}, $.validator.format("请确保输入的值在{0}-{1}个字节之间(一个中文字算2个字节)"));

// 邮政编码验证 
jQuery.validator.addMethod("isZipCode", function(value, element) { 
 var tel = /^[0-9]{6}$/;
 return this.optional(element) || (tel.test(value));
}, "请正确填写您的邮政编码");

注意:要在 additional-methods.js 文件中添加或者在 jquery.validate.js 文件中添加。建议一般写在 additional-methods.js 文件中。
注意:在 messages_cn.js 文件中添加:isZipCode: "只能包括中文字、英文字母、数字和下划线"。调用前要添加对 additional-methods.js 文件的引用。
10、radio 和 checkbox、select 的验证
radio 的 required 表示必须选中一个。

<input type="radio" id="gender_male" value="m" name="gender" class="{required:true}" />
<input type="radio" id="gender_female" value="f" name="gender"/>
checkbox 的 required 表示必须选中。
<input type="checkbox" class="checkbox" id="agree" name="agree" class="{required:true}" />
checkbox 的 minlength 表示必须选中的最小个数,maxlength 表示最大的选中个数,rangelength:[2,3] 表示选中个数区间。
<input type="checkbox" class="checkbox" id="spam_email" value="email" name="spam[]" class="{required:true, minlength:2}" />
<input type="checkbox" class="checkbox" id="spam_phone" value="phone" name="spam[]" />
<input type="checkbox" class="checkbox" id="spam_mail" value="mail" name="spam[]" />
select 的 required 表示选中的 value 不能为空。
<select id="jungle" name="jungle" title="Please select something!" class="{required:true}">
 <option value=""></option>
 <option value="1">Buga</option>
 <option value="2">Baga</option>
 <option value="3">Oi</option>
</select>
select 的 minlength 表示选中的最小个数(可多选的 select),maxlength 表示最大的选中个数,rangelength:[2,3] 表示选中个数区间。
<select id="fruit" name="fruit" title="Please select at least two fruits" class="{required:true, minlength:2}" multiple="multiple">
 <option value="b">Banana</option>
 <option value="a">Apple</option>
 <option value="p">Peach</option>
 <option value="t">Turtle</option>
</select>

附表:内置验证方式:

jQuery Validate表单验证深入学习

本文已被整理到了《jquery表单验证大全》 ,欢迎大家学习阅读。

以上就是针对jQuery Validate表单验证的深入学习,希望对大家的学习有所帮助。

Javascript 相关文章推荐
Extjs Ajax 乱码问题解决方案
Apr 15 Javascript
JS 参数传递的实际应用代码分析
Sep 13 Javascript
div层的移动及性能优化
Nov 16 Javascript
jquery DIV撑大让滚动条滚到最底部代码
Jun 06 Javascript
JavaScript中解析JSON数据的三种方法
Jul 03 Javascript
15款最好的Bootstrap在线编辑器
Aug 03 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
Sep 05 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
Nov 13 Javascript
jQuery中DOM常见操作实例小结
Aug 01 jQuery
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
Aug 28 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
Mar 03 Javascript
Vue实现多页签组件
Jan 14 Vue.js
JavaScript计划任务后台运行的方法
Dec 18 #Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
Dec 18 #Javascript
原生js实现移动端瀑布流式代码示例
Dec 18 #Javascript
jQuery Validate表单验证入门学习
Dec 18 #Javascript
jQuery定义插件的方法
Dec 18 #Javascript
jQuery Validate插件实现表单强大的验证功能
Dec 18 #Javascript
jquery实现二级导航下拉菜单效果
Dec 18 #Javascript
You might like
global.php
2006/12/09 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
node文字生成图片的示例代码
2017/10/26 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
QML实现钟表效果
2020/06/02 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
敬老月活动总结
2014/08/28 职场文书
检讨书1000字
2014/10/11 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
浅谈react useEffect闭包的坑
2021/06/08 Javascript
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏