jQuery Validation如何设置验证消息?

时间:2014-08-19 10:45:55

标签: javascript jquery validation

我为jquery验证插件编写了一个额外的方法,用于检查给定值是否满足验证过程中定义的长度要求。

所以方法如下:

jQuery.validator.addMethod("exactLength", function(value, element, param){
    var len = value.length;
    if ($.isArray(param)){
        if (param.indexOf(len) !== -1){
            return true;
        } else {
            return false;
        }
    } else {
        if (param != len){
            return false;
        } else {
            return true;
        }
    }

}, jQuery.format("Value must have {0} characters"));

它可以工作,但唯一的问题是发送给用户的消息不符合我的需要。原因是因为一个字段可能有超过1个有效长度。

银行代码可以包含8位或11位数字。 所以,如果我定义下面的选项,我希望在出现错误时输出以下内容: “请注意,该值必须为8或11位数。”

{
"options":{
  "rules":  {
     "inputx": {
        "required":     true,
        "exactLength":  [8,11]
      }
   }
}
}

但我想要更灵活,因为我可以将2个值定义为有效长度,“请,值必须为8,11,xxx或23位” 或者我可以在基本字段中输入必须只有1个特定长度“请,值必须有8位”

那么,在方法内部是否可以告诉想要传递给消息?

编辑:

根据Arun P Johny回答添加了完整的解决方案

jQuery.validator.addMethod("exactLength", function(value, element, param){
    var len = value.length;
    if ($.isArray(param)){
        if (param.indexOf(len) !== -1){
            return true;
        } else {
            return false;
        }
    } else {
        if (param != len){
            return false;
        } else {
            return true;
        }
    }

}, function(param, element){
    var str = "";

    if ($.isArray(param)){
        var paramLen = param.length,
                lastParamValue = param[ paramLen - 1];

        if (paramLen == 2){
            str = param[0];
        } else {
            for(var i = 0; i< paramLen - 1; i++){

                if (i == paramLen - 1){
                    str += ',' + param[i];
                }   else {
                    if (i == 0)
                        str += param[0];
                    else
                        str += ',' + param[i];
                }
            }
        }

        return jQuery.format("Value must have {0} or {1} characters", str, lastParamValue );

    } else {
        return jQuery.format("Value must have {0} characters", param )
    }


});

1 个答案:

答案 0 :(得分:0)

消息选项可以是一个功能

jQuery.validator.addMethod("exactLength", function (value, element, param) {
    var len = value.length;
    if ($.isArray(param)) {
        if (param.indexOf(len) !== -1) {
            return true;
        } else {
            return false;
        }
    } else {
        if (param != len) {
            return false;
        } else {
            return true;
        }
    }
}, function (param, element) {
    //you can customize the string generation here, params refers to the array passed to the rule
    return "Value must have " + param.join(',') + " characters"
});

演示:Fiddle