您现在的位置:首页 >> 前端 >> 内容

easyui-validatebox多重校验

时间:2017/4/11 8:13:00 点击:

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

经测试,各重校验均正常执行。

Tags:EA AS SY YU 
作者:网络 来源:风火一回,一生不毁