自定义验证规则:
$.validator.addMethod(
"formula", //验证方法
function(value, element, param) { //验证规则
return value = eval_r(param);
},
'请输入正确的数学公式结果' //验证信息
);
验证规则参数说明:value代表要验证element的值,param代表例如minlength:2规则中的2.
function返回结果为true时成功,其它失败。
一些其它的验证规则(未验证过) :
//
ip验证
jQuery.validator.addMethod(
"
ip
"
,
function
(value, element) {
return
this
.optional(element)
||
(
/
^(\d+)\.(\d+)\.(\d+)\.(\d+)$
/
.test(value)
&&
(RegExp.$
1
<</span> 256 && RegExp.$2 <</span> 256 && RegExp.$3 <</span> 256 && RegExp.$4 <</span> 256));
}, "Please enter a valid ip address.");
// 增加只能是字母和数字的验证
jQuery.validator.addMethod("chrnum", function(value, element) {
return this.optional(element) || (/^([a-zA-Z0-9]+)$/.test(value));
}, "只能输入数字、字母或者它们的组合");
// 自定义验证规则——对电话号码进行验证
$.validator.addMethod("phone",function(value, element){
// “/\(?0\d{2,3}[) -]?\d{7,8}/”匹配电话号码的格式多种:010-82839278、(010)82839278、01082839278等,但是,这样有一个问题
// 如:(01082839278这样的也会匹配。当然可以用分支条件"|"解决,比较麻烦。而且以什么开始或结束也没有匹配。
// 为了简单起见,去掉有"()"的形式。匹配区号3位,则本地号8位,区号4位,则本地号7位的号码。
var tel = /^0\d{2}[-]?\d{8}$|^0\d{3}[-]?\d{7}$/;
return this.optional(element) || (tel.test(value));
}, "电话号码格式不对." );
// 手机号码验证
jQuery.validator.addMethod("mobile", function(value, element) {
var length = value.length;
//长度为11,以13,15,18开头的
return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/.test(value));
}, "手机号码格式不对");
// 邮政编码验证
jQuery.validator.addMethod("zip", function(value, element) {
var tel = /^[0-9]{6}$/;
return this.optional(element) || (tel.test(value));
}, "邮政编码格式不对");
//图片格式(后缀)
jQuery.validator.addMethod("photo", function(value, element) {
//后缀jpg,gif,bmp,jpeg,允许大小写混合后缀
var fileName =/^(([a-zA-Z]:)|(\\))((\\)[^\\\*\?\|/:<>]{1,255})+\.(([j,J][p,P][g,G])|([g,G][i,I][f,F]|([b,B][m,M][p,P])|([j,J][p,P][e,E][g,G])))$/;
return this.optional(element) || (fileName.test(value));
}, "只允许后缀为.jpg,.bmp,.gif,jpeg的文件");
ps: this.optional(element)的意义。比如对一个文本框进行最小值验证,当值为空时,
this.optional(element) = true;当有值时,不管是多少,无论是否滿足规则
,this.optional(element) = false.
为什么要加上这句呢,想想看你要设定一个minlength:2规则,但这不是必填值。来看下minlength验证规则
minlength: function(value, element, param) {
return this.optional(element) || this.getLength($.trim(value), element) >= param;
},
如果没加上this.optional(element) ,当输入值为空时,this.getLength($.trim(value), element) >= param 就是0>=2显然是false.那验证就永远成功不了了。