核心提示:easyui-validatebox多重校验:easyui的validatebox提供了validType属性支持校验和多重校验。但是我们发现当检验方法需要传参数时,默认的多重校验就不支持了。例如:v...
easyui-validatebox多重校验: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]']"
经测试,各重校验均正常执行。