easyui的validatebox提供了validType属性支持校验和多重校验。但是我们发现当检验方法需要传参数时,默认的多重校验就不支持了。
会报String异常, 原因是:html元素的属性只能是字符串,不能是集合。所以这种属性的检验只能是单独校验。
如果使用easyui提供的validType也能实现多重校验的效果。
如上定义了一个多重校验的校验方法,然后通过该方法来分别调用各重校验。 上面的校验也可以写成:
例如:
validType="["validateAdd['字典值重复','$.fn.validatebox.defaults.rules.validateLength',100]",'textValid[32]']"
会报String异常, 原因是:html元素的属性只能是字符串,不能是集合。所以这种属性的检验只能是单独校验。
如果使用easyui提供的validType也能实现多重校验的效果。
data-options="validType:["validateAdd['字典值重复','$.fn.validatebox.defaults.rules.validateLength',100]",'textValid[32]']"
那么下面介绍一下:html属性validtype的校验该怎么实现多重检验。
$(function(){
multipleValidType :{//多个校验的使用
validator: function(value, param){
var options = $.fn.validatebox.defaults;//获取校验属性
var returnFlag = true;
for(var i = 0 ; i < param.length ; i++){
var result = /([a-zA-Z_0-9]+)(.*)/.exec(param[i]); //匹配校验方法
var rule = options.rules[result[1]]; //获取校验方法
if(value && rule){
var ruleParam = eval(result[2]); //获取校验参数
if(!rule["validator"](value, ruleParam)){
var message = rule["message"];
if (ruleParam) {
for ( var i = 0; i < ruleParam.length; i++) {
message = message.replace(new RegExp("\\{" + i + "\\}", "g"), ruleParam[i]);
}
}
$.fn.validatebox.defaults.rules.multipleValidType.message = message;
returnFlag = false;
break;
}
}
}
return returnFlag;
},
message:""
}
})
如上定义了一个多重校验的校验方法,然后通过该方法来分别调用各重校验。 上面的校验也可以写成:
validType="multipleValidType["validateAdd['字典值重复','$.fn.validatebox.defaults.rules.validateLength',100]",'textValid[32]']"
经测试,各重校验均正常执行。