jQuery Validate初步体验(二)


Posted in Javascript onDecember 12, 2015

在上篇文章给大家介绍了jQuery Validate初步体验(一) ,本文继续给大家分享jquery validate相关知识,对本文感兴趣的朋友快来学习吧。

刚刚试了所谓的新版的用法。千万别问我是多新,因为我也不知道。。。

<!DOCTYPE html>
<html>
<head>
<script src="js/jquery.js"></script>
<script src="js/jquery.validate.js"></script>
<script>
 $().ready(function() {
  $("#registerForm").validate();
 });
</script>
</head>
<body>
 <form id="registerForm" method="get" action="">
  <fieldset>
   <p>
    <label for="cusername">用户名</label> 
    <input id="cusername" name="username" type="text" data-rule-required="true" data-rule-rangelength="[2,10]" data-msg-required="用户名不能为空" data-msg-rangelength="用户名长度必须是{0}到{1}个字符">
   </p>
   <p>
    <label for="cpassword">密码</label> 
    <input id="cpassword" name="password" type="password" data-rule-required="true" data-rule-minlength="6" data-msg-required="密码不能为空" data-msg-minlength="密码必须不少于{0}位">
   </p>
   <p>
    <label for="cconfirmpassword">确认密码</label> 
    <input id="cconfirmpassword" name="confirmpassword" type="password" data-rule-required="true" data-rule-equalTo="#cpassword" data-msg-required="请再次输入密码" data-msg-equalTo="两次输入的密码不一致">
   </p>
   <p>
    <label for="cemail">邮箱</label> 
    <input id="cemail" name="email" data-rule-required="true" data-rule-email="true" data-msg-required="邮箱不能为空" data-msg-email="邮箱的格式不正确"/>
   </p>
   <p>
    <input type="submit" value="提交">
   </p>
  </fieldset>
 </form>
</body>
</html>

 个人感觉这种用法比通过javascript自定义验证规则,要方便和简单多了。昨天在刚开始自定义的时候,总是无法正确的提示,当时完全不知道为什么。直到检查了多遍才发现,原来是因为我的rules里的键值对之间漏了一个逗号。所以,如果默认的校验规则已经满足你的验证需求,而你只是想改变一下提示语。那我个人建议你用这种新版的用法,当然也可以用 系列(一) 里的方法

二。具体看情况自己选择。

还有我上面的提示都是默认的黑色,身为提示,那样也太没存在感了。

为了增加存在感,你只需要在<head></head>之间插入下面的代码就可以了。

<style>
 #registerForm label.error{
  margin-left: 10px;
  color:red;
 }
</style>

请注意上面的#号后面跟着是表单的ID,你需要改成你自己相应的表单ID。我昨天尝试的时候,找到的资料里写的是#frm。当时我还以为#frm又是我没接触过的新用法呢,我还一直疑惑,为什么我的提示不显示成红色。基础差哎。。。

如果默认的验证规则已经不能满足你的需求,那么接下来,你就得自定义验证规则了。

比如,这里有一个需求,要你检查用户输入的邮编是否合法,这时你就得自定义验证规则了,使用的方法是jQuery.validator.addMethod()。

<!DOCTYPE html>
<html>
<head>
<script src="js/jquery.js"></script>
<script src="js/jquery.validate.js"></script>
<script>
 $().ready(function() {
  jQuery.validator.addMethod("isZipCode", function(value, element) {
   var tel = /^[0-9]{6}$/;
   return this.optional(element) || (tel.test(value));
  }, "请正确填写您的邮政编码");
  $("#registerForm").validate({
   rules : {
    zipCode : {
     required : true,//对于required的提示语句没有进行任何的处理,他会使用默认的英文的提示。
     isZipCode : true//isZipCode为自定义的验证规则
    }
   },
   messages : {//当你不写提示语句,他会使用上面方法返回的提示。
    zipCode : {
     isZipCode : '请输入正确的邮编'
    }
   }
  });
 });
</script>
<style>
#registerForm label.error {
 margin-left: 10px;
 color: red;
}
</style>
</head>
<body>
 <form id="registerForm" method="get" action="">
  <fieldset>
   <p>
    <label for="czipCode">中国邮编</label> 
    <input id="czipCode" name="zipCode" />
   </p>
   <p>
    <input type="submit" value="提交">
   </p>
  </fieldset>
 </form>
</body>
</html>

当然,你也可以把这个验证规则提取出来存到一个JS文件里,然后在要用的地方引入JS文件。

jQuery.validator.addMethod("isZipCode", function(value, element) {
 var tel = /^[0-9]{6}$/;
 return this.optional(element) || (tel.test(value));
}, "请正确填写您的邮政编码"); 
<!DOCTYPE html>
<html>
<head>
<script src="js/jquery.js"></script>
<script src="js/jquery.validate.js"></script>
<script src="js/validate.expand.js"></script>
<script>
 $().ready(function() {
  $("#registerForm").validate({
   rules : {
    zipCode : {
     required : true,//对于required的提示语句没有进行任何的处理,他会使用默认的英文的提示。
     isZipCode : true//isZipCode为自定义的验证规则
    }
   },
   messages : {//当你不写提示语句,他会使用方法返回的提示。
    zipCode : {
     isZipCode : '请输入正确的邮编'
    }
   }
  });
 });
</script>
<style>
#registerForm label.error {
 margin-left: 10px;
 color: red;
}
</style>
</head>
<body>
 <form id="registerForm" method="get" action="">
  <fieldset>
   <p>
    <label for="czipCode">中国邮编</label> 
    <input id="czipCode" name="zipCode" />
   </p>
   <p>
    <input type="submit" value="提交">
   </p>
  </fieldset>
 </form>
</body>
</html>

 接下来,就要好好说说jQuery.validator.addMethod() 这个方法,这个方法一共有三个参数。

第一个参数 :“isZipCode” 是定义方法名,必须保证方法名唯一。

第二个参数:是一个回调(callback)函数。

这个回调函数有三个参数:

第一个:value ,是当前被验证的元素的值。

第二个:element,是当前被验证的元素。

第三个:param,是传入的参数,例如: minlength : 6  里的参数为6;  rangelength:[2,10]  里的参数为2和10。当你没有传入参数,这个可以省略不写。

在这个回调函数里有一个this.optional(element)函数要特别注意。当表单的输入值为空时,即element的值为空,this.optional(element)的返回值为true,类似于判空操作,也就是说该表单输入项不是必填项,当不填时通过了验证。如果element的值不为空,this.optional(element)的返回值就是false,这时就要根据  ||  后面的验证来判断最终的返回为true 或false。所以当某个输入项不是必填项但如果填写了又需要按照一定的规则来验证的时候,一定要记得带上this.optional(element)。

第三个参数:验证的提示信息。

这个参数可以直接是一句提示信息,例如,"这是必填字段";也可以通过创建函数jQuery.validator.format(value)来显示,例如,$.validator.format("请输入长度在 {0} 到 {1} 之间的字符串"),其中 {0} {1} 代表该方法的参数,也就是回调(callback)函数里的第三个参数param。

官网提供的additional-methods.js里包含一些常用的验证方式,比如lettersonly,ziprange,nowhitespace等,但我粗略的看了一下,发现大部分只是仅供参考,实用性不强,不能直接使用。

我整理了几个网上找到的验证规则,当然也仅供参考。验证规则的核心就是正则表达式,这个得学。

// 邮政编码验证 
jQuery.validator.addMethod("isZipCode", function(value, element) {
var tel = /^[0-9]{6}$/;
return this.optional(element) || (tel.test(value));
}, "请正确填写您的邮政编码");
// 手机号码验证 
jQuery.validator.addMethod("mobile", function(value, element) { 
var length = value.length;
var mobile = /^(13[0-9]|14[0-9]|15[0-9]|18[0-9])\d{8}$/;
return this.optional(element) || (length == 11 && mobile.test(value)); 
}, "手机号码格式错误"); 
// QQ号码验证 
jQuery.validator.addMethod("qq", function(value, element) { 
var tel = /^[1-9]\d{4,10}$/; 
return this.optional(element) || (tel.test(value)); 
}, "qq号码格式错误"); 
// IP地址验证 
jQuery.validator.addMethod("ip", function(value, element) { 
var ip = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; 
return this.optional(element) || (ip.test(value) && (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256)); 
}, "Ip地址格式错误"); 
// 字母和数字的验证 
jQuery.validator.addMethod("chrnum", function(value, element) { 
var chrnum = /^([a-zA-Z0-9]+)$/; 
return this.optional(element) || (chrnum.test(value)); 
}, "只能输入数字和字母(字符A-Z, a-z, 0-9)"); 
// 中文的验证 
jQuery.validator.addMethod("chinese", function(value, element) { 
var chinese = /^[\u4e00-\u9fa5]+$/; 
return this.optional(element) || (chinese.test(value)); 
}, "只能输入中文");

如果有什么地方写错了或者写的不够好,希望大大们能提出来。还有,欢迎留言评论,一起学习。

Javascript 相关文章推荐
简单JS代码压缩器
Oct 12 Javascript
使用javascript获取flash加载的百分比的实现代码
May 25 Javascript
鼠标拖动实现DIV排序示例代码
Oct 14 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
Dec 27 Javascript
解析Node.js异常处理中domain模块的使用方法
Feb 16 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
Mar 31 Javascript
BootStrap的Datepicker控件使用心得分享
May 25 Javascript
JS前向后瞻正则表达式定义与用法示例
Dec 27 Javascript
require.js中的define函数详解
Jul 10 Javascript
详解ES6之用let声明变量以及let loop机制
Jul 15 Javascript
微信小程序云开发实现云数据库读写权限
May 17 Javascript
javascript设计模式之迭代器模式
Jan 30 Javascript
jQuery Validate初步体验(一)
Dec 12 #Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
Dec 12 #Javascript
jQuery同步提交示例代码
Dec 12 #Javascript
JavaScript匿名函数之模仿块级作用域
Dec 12 #Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
Dec 12 #Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
Dec 11 #Javascript
jQuery入门之层次选择器实例简析
Dec 11 #Javascript
You might like
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
jQuery live
2009/05/15 Javascript
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
Python的条件语句与运算符优先级详解
2015/10/13 Python
Python操作MongoDB详解及实例
2017/05/18 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
keras实现基于孪生网络的图片相似度计算方式
2020/06/11 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
优秀学生干部推荐材料
2014/02/03 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
家长写给老师的建议书
2014/03/13 职场文书
3分钟演讲稿
2014/04/30 职场文书
书法大赛策划方案
2014/06/04 职场文书
保护环境的标语
2014/06/09 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
计划生育工作汇报
2014/10/28 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js