当前位置:首页 > 教程/笔记 > 正文内容

easyui-validatebox多重校验 带参数

easyui的validatebox提供了validType属性支持校验和多重校验。但是我们发现当检验方法需要传参数时,默认的多重校验就不支持了。

例如:

validType="["validateAdd['字典值重复','$.fn.validatebox.defaults.rules.validateLength',100]",'textValid[32]']"

此时会报String异常,原因是:html元素的属性只能是字符串,不能是集合。所以这种属性的检验只能是单独校验。

那如和使用easyui提供的validType也能实现多重校验的效果呢?那么下面介绍一下:html属性validtype的校验该怎么实现多重检验:

$(function(){
multipleValidType :{//多个校验的使用
    validator: function(value, param){
    var options = $.fn.validatebox.defaults;//获取校验属性
    varreturnFlag = 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]']"

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