一、简单应用实例:

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 type="text/javascript" language="javascript" src="http://www.jb51.net/Scripts/jquery.validate.min.js"></script>
<h2>ValidateTest</h2>
<form id="loginForm" action="post">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
    <input type="text" id="UserEmail" class="required email" /></td>
</tr>
<tr>
<td>
    <input type="password" id="Password" class="required" /></td>
</tr>
<tr>
<td>
<input type="submit" value="submit" onclick="checkInput();" />
</td>
</tr>
</table>
</form>
<script language="javascript" type="text/javascript">
function checkInput() {
if ($("#loginForm").valid()) {
return true;
}
return false;
}
</script>

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

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

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

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

修改上面的两个INPUT如下:

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

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

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

$(document).ready(function () {
$("#loginForm").validate({
meta: "validate"
});
});

二、验证规则的应用

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的简单方法

仍以登录验证为例:

<script type="text/javascript" language="javascript" src="http://www.jb51.net/Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript" language="javascript" src="http://www.jb51.net/Scripts/jquery.validate.min.js"></script>
<h2>Validate-High</h2>
<form action="" id="loginForm" method="post">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<input type="text" id="UserEmail" />
</td>
</tr>
<tr>
<td>
<input type="password" id="Password" />
</td>
</tr>
<tr>
<td>
<input type="submit" value="submit"/>
</td>
</tr>
</table>
</form> <script language="javascript" type="text/javascript"> $(document).ready(function () {
var validateOpts = {
rules: {
UserEmail: {
required: true,
email: true
},
Password: {
required: true
}
},
messages: {
UserEmail: {
required: "请输入邮箱地址",
email: "邮箱地址不正确"
},
Password: {
required: "请输入密码"
}
}
}; $("#loginForm").validate(validateOpts);
});
</script>

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

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

<script type="text/javascript" language="javascript" src="http://www.jb51.net/Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript" language="javascript" src="http://www.jb51.net/Scripts/jquery.validate.min.js"></script>
<h2>ValidateHigh</h2> <form action="" id="loginForm" method="post">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<input type="text" id="UserEmail" />
</td>
</tr>
<tr>
<td>
<input type="password" id="Password" />
</td>
</tr>
<tr>
<td>
<input type="password" id="RePassword" />
</td>
</tr>
<tr>
<td>
<input type="submit" value="submit"/>
</td>
</tr>
</table>
</form> <script language="javascript" type="text/javascript">
$(document).ready(function () {
var validateOpts = {
rules: {
UserEmail: {
required: true,
email: true
},
Password: {
required: true
},
RePassword: {
equalTo: "#Password"
}
},
messages: {
UserEmail: {
required: "请输入邮箱地址",
email: "邮箱地址不正确"
},
Password: {
required: "请输入密码"
},
RePassword: {
equalTo: "两次输入密码必须相同"
}
}
};
$("#loginForm").validate(validateOpts);
});
</script>

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

var validateOpts = {
rules: {
age: {
required: true,
min: 3
},
parent: {
required: function (element) {
return $("#age").val() < 13;
}
}
}
}

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

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

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

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

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

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

5.ajax验证,使用remote

remote: {
url:"CheckEmail",
type:"post",
dataType:"json"
}

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

$.validator.addMethod("jsonremome", function (value, element, param) {
if (this.optional(element))
return"dependency-mismatch"; var previous =this.previousValue(element);
if (!this.settings.messages[element.name])
this.settings.messages[element.name] = {}; previous.originalMessage =this.settings.messages[element.name].remote;
this.settings.messages[element.name].remote = previous.message; param =typeof param =="string"&& { url: param} || param; if (previous.old !== value) { previous.old = value;
var validator =this;
this.startRequest(element);
var data = {};
data[element.name] = value; $.ajax($.extend(true, {
url: param,
mode: "abort",
port: "validate"+ element.name,
dataType: "json",
data: data,
success: function (response) {
validator.settings.messages[element.name].remote = previous.originalMessage;
//var valid = response === true;
var valid = response.Result ===true;
if (valid) {
var submitted = validator.formSubmitted;
validator.prepareElement(element);
validator.formSubmitted = submitted;
validator.successList.push(element);
validator.showErrors();
} else {
var errors = {};
//var message = (response.Message || validator.defaultMessage(element, "jsonremote"));
var message = response.Message ||"远程验证未通过";
errors[element.name] = $.isFunction(message) ? message(value) : message;
validator.showErrors(errors);
}
previous.valid = valid;
validator.stopRequest(element, valid);
}
}, param));
return"pending";
} elseif (this.pending[element.name]) {
return"pending";
}
return previous.valid; });

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

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

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

6.错误显示规则

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

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

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. Spring源码阅读(八)

    摘要: 本文首先将举例说明如何使用BeanWrapper,然后根据例子中的结果分析BeanWrapper的源码.由于在spring中BeanWrapperImpl是BeanWrapper接口的唯一实现 ...

  2. L1正则和L2正则的比较分析详解

    原文链接:https://blog.csdn.net/w5688414/article/details/78046960 范数(norm) 数学上,范数是一个向量空间或矩阵上所有向量的长度和大小的求和 ...

  3. Linux服务器---流量监控ntop

    Ntop Ntop 是一款类似于sniffer的流量监控工具,它显示出的流量信息比mrtg更加详细. 1 .安装一些依赖软件 [root@localhost bandwidthd]#  yum ins ...

  4. linux 开始

    3306 -- mysql 8000--django默认 服务由端口控制 https -- 443 http -- 80 linux发行版:1.centos 免费版的redhat2.ubuntu 乌版 ...

  5. CAT Caterpillar ET Diagnostic Adapter has a powerful function

    As a excellent Professional Diagnostic Tools products, CAT Caterpillar ET Diagnostic Adapter has a p ...

  6. jquery easyui datagrid 空白条处理 自适应宽高 格式化函数formmater 初始化时会报错 cannot read property 'width'||'length' of null|undefined

    1---表格定义好之后右侧可能会有一个空白条 这个空白条是留给滚动条的,当表格中的一页的数据在页面中不能全显示时会自动出现滚动条,网上有很多事要改源码才可以修改这个,但是当项目中多处用到时,有的需要滚 ...

  7. The logback manual #01# Introduction

    依赖包如下pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...

  8. 使用Oracle数据库时的org.springframework.jdbc.BadSqlGrammarException:

    org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLExc ...

  9. mycat中schema.xml的一些解释

    <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> &l ...

  10. win7使用问题解决

    1. VM和主机互相PING不通 问题:桥接模式,VM可以ping 通外网,可以ping 通局域网其它机子,就是ping 不通本地主机 解决:将 vm网卡和本地网连接网卡都共享出来