jquery.validate 自定义验证方法及validate相关参数


Posted in Javascript onJanuary 18, 2016

Jquery Validate 相关参数

//定义中文消息
var cnmsg = {
required: “必选字段”,
remote: “请修正该字段”,
email: “请输入正确格式的电子邮件”,
url: “请输入合法的网址”,
date: “请输入合法的日期”,
dateISO: “请输入合法的日期 (ISO).”,
number: “请输入合法的数字”,
digits: “只能输入整数”,
creditcard: “请输入合法的信用卡号”,
equalTo: “请再次输入相同的值”,
accept: “请输入拥有合法后缀名的字符串”,
maxlength: jQuery.format(“请输入一个长度最多是 {0} 的字符串”),
minlength: jQuery.format(“请输入一个长度最少是 {0} 的字符串”),
rangelength: jQuery.format(“请输入一个长度介于 {0} 和 {1} 之间的字符串”),
range: jQuery.format(“请输入一个介于 {0} 和 {1} 之间的值”),
max: jQuery.format(“请输入一个最大为 {0} 的值”),
min: jQuery.format(“请输入一个最小为 {0} 的值”)
};
jQuery.extend(jQuery.validator.messages, cnmsg);

validate 自定义验证

$(document).ready( function() {
/**
* 身份证号码验证
*
*/
function isIdCardNo(num) {
var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
var parityBit=new Array("1","0","X","9","8","7","6","5","4","3","2");
var varArray = new Array();
var intValue;
var lngProduct = 0;
var intCheckDigit;
var intStrLen = num.length;
var idNumber = num;
// initialize
if ((intStrLen != 15) && (intStrLen != 18)) {
return false;
}
// check and set value
for(i=0;i<intStrLen;i++) {
varArray[i] = idNumber.charAt(i);
if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
return false;
} else if (i < 17) {
varArray[i] = varArray[i] * factorArr[i];
}
}
if (intStrLen == 18) {
//check date
var date8 = idNumber.substring(6,14);
if (isDate8(date8) == false) {
return false;
}
// calculate the sum of the products
for(i=0;i<17;i++) {
lngProduct = lngProduct + varArray[i];
}
// calculate the check digit
intCheckDigit = parityBit[lngProduct % 11];
// check last digit
if (varArray[17] != intCheckDigit) {
return false;
}
}
else{ //length is 15
//check date
var date6 = idNumber.substring(6,12);
if (isDate6(date6) == false) {
return false;
}
}
return true;
}
/**
* 判断是否为“YYYYMM”式的时期
*
*/
function isDate6(sDate) {
if(!/^[0-9]{6}$/.test(sDate)) {
return false;
}
var year, month, day;
year = sDate.substring(0, 4);
month = sDate.substring(4, 6);
if (year < 1700 || year > 2500) return false
if (month < 1 || month > 12) return false
return true
}
/**
* 判断是否为“YYYYMMDD”式的时期
*
*/
function isDate8(sDate) {
if(!/^[0-9]{8}$/.test(sDate)) {
return false;
}
var year, month, day;
year = sDate.substring(0, 4);
month = sDate.substring(4, 6);
day = sDate.substring(6, 8);
var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31]
if (year < 1700 || year > 2500) return false
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1]=29;
if (month < 1 || month > 12) return false
if (day < 1 || day > iaMonthDays[month - 1]) return false
return true
}
// 身份证号码验证 
jQuery.validator.addMethod("idcardno", function(value, element) {
return this.optional(element) || isIdCardNo(value); 
}, "请正确输入身份证号码");
//字母数字
jQuery.validator.addMethod("alnum", function(value, element) {
return this.optional(element) || /^[a-zA-Z0-9]+$/.test(value);
}, "只能包括英文字母和数字");
// 邮政编码验证
jQuery.validator.addMethod("zipcode", function(value, element) {
var tel = /^[0-9]{6}$/;
return this.optional(element) || (tel.test(value));
}, "请正确填写邮政编码");
// 汉字
jQuery.validator.addMethod("chcharacter", function(value, element) {
var tel = /^[\u4e00-\u9fa5]+$/;
return this.optional(element) || (tel.test(value));
}, "请输入汉字");
// 字符最小长度验证(一个中文字符长度为2)
jQuery.validator.addMethod("stringMinLength", 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);
}, $.validator.format("长度不能小于{0}!"));
// 字符最大长度验证(一个中文字符长度为2)
jQuery.validator.addMethod("stringMaxLength", 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);
}, $.validator.format("长度不能大于{0}!"));
// 字符验证
jQuery.validator.addMethod("string", function(value, element) {
return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);
}, "不允许包含特殊符号!");
// 手机号码验证
jQuery.validator.addMethod("mobile", function(value, element) {
var length = value.length;
return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/.test(value));
}, "手机号码格式错误!");
// 电话号码验证
jQuery.validator.addMethod("phone", function(value, element) {
var tel = /^(\d{3,4}-?)?\d{7,9}$/g;
return this.optional(element) || (tel.test(value));
}, "电话号码格式错误!");
// 邮政编码验证
jQuery.validator.addMethod("zipCode", function(value, element) {
var tel = /^[0-9]{6}$/;
return this.optional(element) || (tel.test(value));
}, "邮政编码格式错误!");
// 必须以特定字符串开头验证
jQuery.validator.addMethod("begin", function(value, element, param) {
var begin = new RegExp("^" + param);
return this.optional(element) || (begin.test(value));
}, $.validator.format("必须以 {0} 开头!"));
// 验证两次输入值是否不相同
jQuery.validator.addMethod("notEqualTo", function(value, element, param) {
return value != $(param).val();
}, $.validator.format("两次输入不能相同!"));
// 验证值不允许与特定值等于
jQuery.validator.addMethod("notEqual", function(value, element, param) {
return value != param;
}, $.validator.format("输入值不允许为{0}!"));
// 验证值必须大于特定值(不能等于)
jQuery.validator.addMethod("gt", function(value, element, param) {
return value > param;
}, $.validator.format("输入值必须大于{0}!"));
// 验证值小数位数不能超过两位
jQuery.validator.addMethod("decimal", function(value, element) {
var decimal = /^-?\d+(\.\d{1,2})?$/;
return this.optional(element) || (decimal.test(value));

jQuery.validate 用法

2010年04月12日 星期一 14:33

名称 返回类型 描述

validate(options) 返回:Validator 验证所选的FORM

valid() 返回:Boolean 检查是否验证通过

rules() 返回:Options 返回元素的验证规则

rules(add,rules) 返回:Options 增加验证规则

rules(remove,rules)

jquery.validate是一个基于jquery的非常优秀的验证框架,我们可以通过它迅速验证一些常见的输入,并且可以自己扩充自己的验证方法,而且对国际化也有非常好的支持。

jquery.validate 官方网址:http://bassistance.de/jquery-plugins/jquery-plugin-validation/

使用用法:

1、首先下载jquery.js和jquery.validate.js并引入js文件(注意:jquery必须在jquery.validate.js 之前被引入,否则会报错)

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="jquery.validate.js"></script>

2、编写需要验证的表单代码及编写验证代码(编写验证代码有两种方式,首先使用普通方式)

var validator = $("formId").validate({// #formId为需要进行验证的表单ID
errorElement :"div",// 使用"div"标签标记错误, 默认:"label"
wrapper:"li",// 使用"li"标签再把上边的errorELement包起来
errorClass :"validate-error",// 错误提示的css类名"error"
onsubmit:true,// 是否在提交是验证,默认:true
onfocusout:true,// 是否在获取焦点时验证,默认:true
onkeyup :true,// 是否在敲击键盘时验证,默认:true
onclick:false,// 是否在鼠标点击时验证(一般验证checkbox,radiobox)
focusCleanup:false,// 当未通过验证的元素获得焦点时,并移除错误提示
rules: {
loginName: {// 需要进行验证的输入框name
required: true// 验证条件:必填
},
loginPassword: {// 需要进行验证的输入框name
required: true,// 验证条件:必填
minlength: 5// 验证条件:最小长度为5
},
email: {// 需要进行验证的输入框name
required: true,// 验证条件:必填
email: true// 验证条件:格式为email
}
},
messages: {
loginName: {
required: "用户名不允许为空!"// 验证未通过的消息
},
loginPassword: {
required: "密码不允许为空!",
minlength: jQuery.format("密码至少输入 {0} 字符!")
},
email: {
required: "email不允许为空",
email: "邮件地址格式错误!"
}
}

2、使用meta String方式进行验证,即验证内容与写入class中(注意meta String方式需要引入jquery.metadata.js文件)

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.metadata.js"></script>
<script type="text/javascript" src="jquery.validate.js"></script>
<form id="validate" action="admin/transfer!save.action" method="post">
<input type="text" class="required" name="entity.name" />
<input type="text" class="email" name="entity.email" />
<input type="submit" class="button" value="提 交" />
</form>
<script type="text/javascript">
$(document).ready(
function() {
$("#formId").validate({// #formId为需要进行验证的表单ID
meta :"validate"// 采用meta String方式进行验证(验证内容与写入class中)
errorElement :"div",// 使用"div"标签标记错误, 默认:"label"
wrapper:"li",// 使用"li"标签再把上边的errorELement包起来
errorClass :"validate-error",// 错误提示的css类名"error"
onsubmit:true,// 是否在提交是验证,默认:true
onfocusout:true,// 是否在获取焦点时验证,默认:true
onkeyup :true,// 是否在敲击键盘时验证,默认:true
onclick:false,// 是否在鼠标点击时验证(一般验证checkbox,radiobox)
focusCleanup:false,// 当未通过验证的元素获得焦点时,并移除错误提示
});
})
</script>

注意:在Struts2应用中经常用遇到name="entity.name"形式的input表单(即name中包含逗号或其它特殊符号时),我们可以将上述名称以引号("")括起即可,如:

rules: {
"entity.loginName": {// 需要进行验证的输入框name
required: true// 验证条件:必填
}
},
messages: {
"entity.loginName": {
required: "用户名不允许为空!"// 验证未通过的消息
}
}

可给我email:happyczx@126.com 欢迎一起探讨有关java技术的问题

以上部分代码来源于payj开源支付系统,这个java开源项目里面有很多优秀的Struts2 spring hibernate jquery 等框架的应用源码,值得一看。在这里先推荐一下,呵呵。。。

ps:Jquery Validate 验证规则

(1)required:true 必输字段
(2)remote:”check.php” 使用ajax方法调用check.php验证输入值
(3)email:true 必须输入正确格式的电子邮件
(4)url:true 必须输入正确格式的网址
(5)date:true 必须输入正确格式的日期
(6)dateISO:true 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性
(7)number:true 必须输入合法的数字(负数,小数)
(8)digits:true 必须输入整数
(9)creditcard: 必须输入合法的信用卡号
(10)equalTo:”#field” 输入值必须和#field相同
(11)accept: 输入拥有合法后缀名的字符串(上传文件的后缀)
(12)maxlength:5 输入长度最多是5的字符串(汉字算一个字符)
(13)minlength:10 输入长度最小是10的字符串(汉字算一个字符)
(14)rangelength:[5,10] 输入长度必须介于 5 和 10 之间的字符串”)(汉字算一个字符)
(15)range:[5,10] 输入值必须介于 5 和 10 之间
(16)max:5 输入值不能大于5
(17)min:10 输入值不能小于10

Jquery Validate submit 提交

submitHandler: 通过验证后运行的函数,里面要加上表单提交的函 数,否则表单不会提交
$(".selector").validate({ submitHandler:function(form) { $(form).ajaxSubmit(); //用Jquery Form的函数 } })

Jquery Validate error 错误提示dom

.errorPlacement:Callback Default: 把错误信息放在验证的元素后面
指明错误放置的位置,默认情况是:error.appendTo(element.parent());即把错误信息放在验证的元素后面

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

设置错误提示的样式,可以增加图标显示,like:

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;
}

Javascript 相关文章推荐
js 图片轮播(5张图片)
Dec 30 Javascript
javascript简单事件处理和with用法介绍
Sep 16 Javascript
Javascript动画的实现原理浅析
Mar 02 Javascript
javascript解决IE6下hover问题的方法
Jul 28 Javascript
基于HTML模板和JSON数据的JavaScript交互(移动端)
Apr 06 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
May 10 Javascript
使用开源工具制作网页验证码的方法
Oct 17 Javascript
javascript垃圾收集机制的原理分析
Dec 08 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
Feb 22 Javascript
详解Vue使用 vue-cli 搭建项目
Apr 20 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
Jan 08 Javascript
JavaScript中引用vs复制示例详析
Dec 06 Javascript
实例详解jQuery表单验证插件validate
Jan 18 #Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
Jan 18 #Javascript
jQuery插件Validate实现自定义校验结果样式
Jan 18 #Javascript
jQuery插件实现带圆点的焦点图片轮播切换
Jan 18 #Javascript
轻松实现js图片预览功能
Jan 18 #Javascript
jQuery插件Validate实现自定义表单验证
Jan 18 #Javascript
Jquery和angularjs获取check框选中的值的方法汇总
Jan 17 #Javascript
You might like
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
Yii框架form表单用法实例
2014/12/04 PHP
用js解决数字不能换行问题
2010/08/10 Javascript
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
javascript在子页面中函数无法调试问题解决方法
2014/01/17 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
js实现分割上传大文件
2016/03/09 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
Vue如何循环提取对象数组中的值
2020/11/18 Vue.js
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
python中使用you-get库批量在线下载bilibili视频的教程
2020/03/10 Python
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
法学毕业生自荐信
2013/11/13 职场文书
一年级家长会邀请函
2014/01/25 职场文书
家长写给老师的建议书
2014/03/13 职场文书
神龙架导游词
2015/02/11 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
python爬虫框架feapde的使用简介
2021/04/20 Python
浅谈克隆 JavaScript
2021/11/02 Javascript
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python