jQuery Validate初步体验(二)_jquery

在上篇文章给大家介绍了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));
}, "只能输入中文"); 

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jquery_validate
jquery validate、jquery validate 验证、jquery.validate.js、jquery validate 下载、jquery validate api,以便于您获取更多的相关知识。

时间: 2024-08-01 11:57:57

jQuery Validate初步体验(二)_jquery的相关文章

jQuery Validate初步体验(一)_jquery

jQuery 是一个快速.简单的JavaScript library, 它简化了HTML 文件的traversing,事件处理.动画.Ajax 互动,从而方便了网页制作的快速发展. jQuery 是为改变你编写JavaScript 的方式而设计的. jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单. 但是在学习的过程中,我也遇到了疑惑,网上的很多例子貌似都是依赖jquery.metadata.js这个库,然后在标签里写成class="required r

jquery.validate的使用说明介绍_jquery

一.准备工作需要JQuery版本:1.2.6+, 兼容 1.3.2 官网地址:http://jqueryvalidation.org/ 二.默认校验规则(1)required:true 必输字段  (2)remote:"check.php" 使用ajax方法调用check.php验证输入值  (3)email:true 必须输入正确格式的电子邮件  (4)url:true 必须输入正确格式的网址  (5)date:true 必须输入正确格式的日期  (6)dateISO:true 必须

jquery.validate使用详解_jquery

一.简单应用实例: 1.用class样式进行验证,用法简单,但不能自定义错误信息,只能修改jquery-1.4.1.min.js中的内置消息,也不支持高级验证规则. <script type="text/javascript" language="javascript" src="http://www.jb51.net/Scripts/jquery-1.4.1.min.js"></script> <script ty

jquery.validate分组验证代码_jquery

如下所示: 第一步填写基本信息, 第二步填写教育信息 要求我们每一步操作都要进行验证,这样我们可以用以下方式进行验证: 复制代码 代码如下: <script type="text/javascript" language="javascript" src="/Scripts/jquery-1.4.1.min.js"></script> <script type="text/javascript"

深入学习jQuery Validate表单验证_jquery

本文实例介绍了jQuery Validate表单验证,主要是利用jquery.metadata.js将校验规则直接写在class属性里面并定义错误信息的提示,分享给大家供大家参考,具体内容如下 1.添加一个另外一个插件jquery.metadata.js 并把校验规则写在控件里面. 2.需要改写触发校验的方式. $("#commentForm").validate({meta: "validate"}); 3.详细代码如下: <html> <hea

IE8兼容Jquery.validate.js的问题_jquery

只需在jquery.validate.js 文件中 在446行附近找到 return $([]).add(this.currentForm.elements).filter(":input") 更换成 var listeElements = new Array(); for(var k=0;k<this.currentForm.elements.length;k++){ listeElements[k] = this.currentForm.elements[k]; } retu

jQuery UI Autocomplete 体验分享_jquery

支持的数据源 jQuery UI Autocomplete主要支持字符串Array.JSON两种数据格式. 普通的Array格式没有什么特殊的,如下: 复制代码 代码如下: ["cnblogs","博客园","囧月"] 对于JSON格式的Array,则要求有:label.value属性,如下: 复制代码 代码如下: [{label: "博客园", value: "cnblogs"}, {label: &qu

jquery $.ajax入门应用二_jquery

前台 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>无标题页&l

jquery validate select动态验证的问题

问题描述 jquery validate select动态验证的问题 什么我的样式已经加上去了,但是没有错误信息提示?? select 验证和其他的标签有什么不同吗? 解决方案 jquery-validate验证jquery validate 验证jquery validate 验证 解决方案二: 可以自定义一个验证规则