一、简单应用实例:

1.用class样式进行验证,用法简单,但不能自定义错误信息,只能修改jquery-1.4.1.min.js中的内置消息,也不支持高级验证规则。

  1. <script type="text/javascript" language="javascript" src="http://www.jb51.net/Scripts/jquery-1.4.1.min.js"></script>
  2. <script type="text/javascript" language="javascript" src="http://www.jb51.net/Scripts/jquery.validate.min.js"></script>
  3. <h2>ValidateTest</h2>
  4. <form id="loginForm" action="post">
  5. <table border="0" cellpadding="0" cellspacing="0">
  6. <tr>
  7. <td>
  8.     <input type="text" id="UserEmail" class="required email" /></td>
  9. </tr>
  10. <tr>
  11. <td>
  12.     <input type="password" id="Password" class="required" /></td>
  13. </tr>
  14. <tr>
  15. <td>
  16. <input type="submit" value="submit" onclick="checkInput();" />
  17. </td>
  18. </tr>
  19. </table>
  20. </form>
  21. <script language="javascript" type="text/javascript">
  22. function checkInput() {
  23. if ($("#loginForm").valid()) {
  24. return true;
  25. }
  26. return false;
  27. }
  28. </script>

当然,如果不希望使用onclick事件进行提交验证,也可以在页面加载时加上jQuery的监控,代码如下:

  1. $(document).ready(function () {
  2. jQuery("#loginForm").validate();
  3. });

这时就不需要在提交按钮上加 onclick="checkInput();"这个事件了。

2.使用Json字符串验证,使用该规则验证,必须额外引入jquery.metadata.pack.js文件

修改上面的两个INPUT如下:

  1. <input type="text" id="UserEmail" class="{validate:{ required:true,email:true }}" />
  2. <input type="password" id="Password" class="{validate:{required:true,minlength:6,messages:{required:'请输入密码 ',minlength:'密码至少6位'}}}" />

可以看到,我们已经可以自定义错误消息了。

另外必须在页面中加上以下代码:

  1. $(document).ready(function () {
  2. $("#loginForm").validate({
  3. meta: "validate"
  4. });
  5. });

二、验证规则的应用

1.使用class验证的规则:

在class中可以使用:required,email,number,url,date,dateISO,dateDE,digits,creditcard,phoneUS

可以增加属性:minlength,maxlength,min,max,accept,remote(注:请检查是否返回是bool还是xml),equalTo='#password'

没有找到使用办法的内置方法:required(dependency-expression),required(dependency-callback),range,rangelength

2.使用Json对象验证的规则:

在class中进行如下定义:class=“{validate:{required:true,minlength:6,messages:{required:'请输入密码',minlength:'密码太短啦至少6位'}}}”

我们仍可进行以下定义:number:true, email:true, url:true, date:true, dateISO:true, dateDE:true, digits:true, creditcard:true, phoneUS:true

min:3, max:10, minlength:3, maxlength:10,required: '#other:checked'【此处表达式函数为required(dependency-expression)】

相比使用class来说,我们已经可以使用range方法了,可定义为数字range:[3,10],字符串长度rangelength:[3,10],remote:url,accept:'.csv|.jpg|.doc|.docx', equalTo:'#Password'

没有找到使用方法的内置方法:required(dependency-callback)

三、高级验证方法

在前面说到的简单验证中,使用起来非常简单,有些傻瓜式的味道,但毕竟有些内置规则不能使用。但要想做到灵活运用,还是需要通过JS编码来完成。这样不但所有的内置规则可以使用,而且我们还可以自定义验证规则。以下实例我从易到难逐个列出:

1.编写JS的简单方法

仍以登录验证为例:

  1. <script type="text/javascript" language="javascript" src="http://www.jb51.net/Scripts/jquery-1.4.1.min.js"></script>
  2. <script type="text/javascript" language="javascript" src="http://www.jb51.net/Scripts/jquery.validate.min.js"></script>
  3. <h2>Validate-High</h2>
  4. <form action="" id="loginForm" method="post">
  5. <table border="0" cellpadding="0" cellspacing="0">
  6. <tr>
  7. <td>
  8. <input type="text" id="UserEmail" />
  9. </td>
  10. </tr>
  11. <tr>
  12. <td>
  13. <input type="password" id="Password" />
  14. </td>
  15. </tr>
  16. <tr>
  17. <td>
  18. <input type="submit" value="submit"/>
  19. </td>
  20. </tr>
  21. </table>
  22. </form>
  23.  
  24. <script language="javascript" type="text/javascript">
  25.  
  26. $(document).ready(function () {
  27. var validateOpts = {
  28. rules: {
  29. UserEmail: {
  30. required: true,
  31. email: true
  32. },
  33. Password: {
  34. required: true
  35. }
  36. },
  37. messages: {
  38. UserEmail: {
  39. required: "请输入邮箱地址",
  40. email: "邮箱地址不正确"
  41. },
  42. Password: {
  43. required: "请输入密码"
  44. }
  45. }
  46. };
  47.  
  48. $("#loginForm").validate(validateOpts);
  49. });
  50. </script>

我们只需设置validate的参数即可。

2.equalTo的使用,一般在注册时会用到

  1. <script type="text/javascript" language="javascript" src="http://www.jb51.net/Scripts/jquery-1.4.1.min.js"></script>
  2. <script type="text/javascript" language="javascript" src="http://www.jb51.net/Scripts/jquery.validate.min.js"></script>
  3. <h2>ValidateHigh</h2>
  4.  
  5. <form action="" id="loginForm" method="post">
  6. <table border="0" cellpadding="0" cellspacing="0">
  7. <tr>
  8. <td>
  9. <input type="text" id="UserEmail" />
  10. </td>
  11. </tr>
  12. <tr>
  13. <td>
  14. <input type="password" id="Password" />
  15. </td>
  16. </tr>
  17. <tr>
  18. <td>
  19. <input type="password" id="RePassword" />
  20. </td>
  21. </tr>
  22. <tr>
  23. <td>
  24. <input type="submit" value="submit"/>
  25. </td>
  26. </tr>
  27. </table>
  28. </form>
  29.  
  30. <script language="javascript" type="text/javascript">
  31. $(document).ready(function () {
  32. var validateOpts = {
  33. rules: {
  34. UserEmail: {
  35. required: true,
  36. email: true
  37. },
  38. Password: {
  39. required: true
  40. },
  41. RePassword: {
  42. equalTo: "#Password"
  43. }
  44. },
  45. messages: {
  46. UserEmail: {
  47. required: "请输入邮箱地址",
  48. email: "邮箱地址不正确"
  49. },
  50. Password: {
  51. required: "请输入密码"
  52. },
  53. RePassword: {
  54. equalTo: "两次输入密码必须相同"
  55. }
  56. }
  57. };
  58. $("#loginForm").validate(validateOpts);
  59. });
  60. </script>

3.required(dependency-callback)的使用,绿色字体。

  1. var validateOpts = {
  2. rules: {
  3. age: {
  4. required: true,
  5. min: 3
  6. },
  7. parent: {
  8. required: function (element) {
  9. return $("#age").val() < 13;
  10. }
  11. }
  12. }
  13. }

4.自定义规则,使用addMethod方法,如下:

//方法接收三个参数(value,element,param)
//value是元素的值,element是元素本身 param是参数,我们可以用addMethod来添加除built-in Validation methods之外的验证方法
//比如有一个字段,只能输一个字母,范围是a-f,写法如下

  1. $.validator.addMethod("af", function (value, element, params) {
  2. if (value.length >1) {
  3. returnfalse;
  4. }
  5. if (value >=params[0] && value <=params[1]) {
  6. returntrue;
  7. } else {
  8. returnfalse;
  9. }
  10. }, "必须是一个字母,且a-f");

这样我们就可以在rules中加上这个规则,如下

  1. var validateOpts = {
  2. rules: {
  3. selectorId: {
  4. af: ["a","f"]//如果只有一个参数,直接写,如果af:"a",那么a就是这个唯一的参数,如果多个参数,用在[]里,用逗号分开
  5. }
  6. }
  7. }

另外,经过试验,在Json方式中,我们可以使用af:['a','f'],这个验证可以起作用,在class方式中,在某个元素上增加af='af',验证也可以起到作用。

5.ajax验证,使用remote

  1. remote: {
  2. url:"CheckEmail",
  3. type:"post",
  4. dataType:"json"
  5. }

如果我们验证的方法是返回Boolean类型,这个方法是没有问题的。但很多时候我们可能返回的信息会更多,或者返回其它类型,这时我们可以重新定义一个新的remote方法,示例如下(返回一个Json对象):

  1. $.validator.addMethod("jsonremome", function (value, element, param) {
  2. if (this.optional(element))
  3. return"dependency-mismatch";
  4.  
  5. var previous =this.previousValue(element);
  6. if (!this.settings.messages[element.name])
  7. this.settings.messages[element.name] = {};
  8.  
  9. previous.originalMessage =this.settings.messages[element.name].remote;
  10. this.settings.messages[element.name].remote = previous.message;
  11.  
  12. param =typeof param =="string"&& { url: param} || param;
  13.  
  14. if (previous.old !== value) {
  15.  
  16. previous.old = value;
  17. var validator =this;
  18. this.startRequest(element);
  19. var data = {};
  20. data[element.name] = value;
  21.  
  22. $.ajax($.extend(true, {
  23. url: param,
  24. mode: "abort",
  25. port: "validate"+ element.name,
  26. dataType: "json",
  27. data: data,
  28. success: function (response) {
  29. validator.settings.messages[element.name].remote = previous.originalMessage;
  30. //var valid = response === true;
  31. var valid = response.Result ===true;
  32. if (valid) {
  33. var submitted = validator.formSubmitted;
  34. validator.prepareElement(element);
  35. validator.formSubmitted = submitted;
  36. validator.successList.push(element);
  37. validator.showErrors();
  38. } else {
  39. var errors = {};
  40. //var message = (response.Message || validator.defaultMessage(element, "jsonremote"));
  41. var message = response.Message ||"远程验证未通过";
  42. errors[element.name] = $.isFunction(message) ? message(value) : message;
  43. validator.showErrors(errors);
  44. }
  45. previous.valid = valid;
  46. validator.stopRequest(element, valid);
  47. }
  48. }, param));
  49. return"pending";
  50. } elseif (this.pending[element.name]) {
  51. return"pending";
  52. }
  53. return previous.valid;
  54.  
  55. });

服务器端方法如下(MVC中):

  1. public JsonResult CheckEmail(string UserEmail)
  2. {
  3. returnnew JsonResult { Data =new { Result =false, Message="Please change the filed" } };
  4. }

我们就可以使用jsonremote来取代remote方法了。当然,remote方法依然可以使用。

6.错误显示规则

  1. var validateOpts = {
  2. wrapper: "div",// default has no wrapper
  3. errorClass: "invalid", // the default value is error
  4. errorElement: "em", // default value is lable
  5. errorLabelContainer: "#messageBox", // to gather all the error messages
  6. }

以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持脚本之家。

jquery.validate使用详解的更多相关文章

  1. jquery的css详解(二)

    jq的工具方法style用于设置样式,jq的实例方法css在设置样式时就是调用的它,接下来分析一下源码. jQuery.extend({ ............................ st ...

  2. jQuery.attr() 函数详解

    一,jQuery.attr()  函数详解: http://www.365mini.com/page/jquery-attr.htm 二,jQuery函数attr()和prop()的区别: http: ...

  3. jQuery 事件用法详解

    jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jque ...

  4. jQuery.ready() 函数详解

    jQuery.ready() 函数详解 ready()函数用于在当前文档结构载入完毕后立即执行指定的函数. 该函数的作用相当于window.onload事件. 你可以多次调用该函数,从而绑定多个函数, ...

  5. jquery inArray()函数详解

    jquery inarray()函数详解 jquery.inarray(value,array)确定第一个参数在数组中的位置(如果没有找到则返回 -1 ). determine the index o ...

  6. jQuery extend方法详解

    先说个概念的东西: jQuery为开发插件提拱了两个方法,分别是: $.fn.extend(item):为每一个实例添加一个实例方法item.($("#btn1") 会生成一个 j ...

  7. jQuery的观察者模式详解 转载

    jQuery的观察者模式详解 投稿:hebedich 本文主要是介绍了jQuery中on方法及trigger方法,以及围绕这个方法来体验的观察者模式,是篇非常不错的文章,对我们理解观察者模式很有帮助. ...

  8. 【转载】jQuery.extend 函数详解

    转载自:http://www.cnblogs.com/RascallySnake/archive/2010/05/07/1729563.html jQuery.extend 函数详解 JQuery的e ...

  9. jQuery.hasClass() 函数详解

    jQuery.hasClass() 函数详解 hasClass()函数用于指示当前jQuery对象所匹配的元素是否含有指定的css类名. 该函数属于jQuery对象(实例). 语法 JavaScrip ...

随机推荐

  1. AELF(ELF)区块链项目介绍

    AELF(ELF)区块链项目介绍,Aelf在交易所上的名称是ELF,最近涨了不少了,可以长期关注逢低建仓,根据自身情况可以适当轻仓配置点.AELF总结下来就是希望打造一个B2B的区块链开放式OS系统. ...

  2. httpclient get post

    https://www.cnblogs.com/wutongin/p/7778996.html post请求方法和get请求方法 package com.xkeshi.paymentweb.contr ...

  3. 典型 python 小练习

    #格式化输出 3方式a=input('user:').strip()print('%s'%a) #%s 占位符a1=[1,2,3]print(f'333{a1}早') #法二print('ss{0}k ...

  4. bzoj4443 小凸玩矩阵

    题目链接 二分+最大check #include<algorithm> #include<iostream> #include<cstdlib> #include& ...

  5. 前端框架VUE----es6简单介绍

    1.ECMAScript 6 简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScr ...

  6. django中表单处理

    在web端与后端交互时,我们除了使用html原生的form标签,还可以使用django自带的表单. Django 提供广泛的工具和库来帮助你构建表单来接收网站访问者的输入,然后处理以及响应输入. HT ...

  7. Golang的数组初始化方式及for-range遍历

    package main import ( "fmt" ) func main() { ]], , } //定义并初始化长度为3的数组 fmt.Println(arr1) //[1 ...

  8. 框架frame

    使用框架切分网页 效果: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  9. Mysql 存储过程中使用多游标

    Mysql 存储过程中使用多游标 drop procedure IF EXISTS test_proc_1; create procedure test_proc_1() begin ; ) ; ) ...

  10. python之路-day1-while循环

    while Thue: (条件为真无限循环)  break(跳出循环) 猜年龄: #Author:zwwage_of_jay = 40count = 0while count < 3: gues ...