基于jQuery.validator.addMethod的字段的条件规则

时间:2015-06-16 06:45:13

标签: jquery jquery-validate

我有两个jQuery.validator.addMethod,名为" A"和" B"。

是否可以根据不同的方法在字段上设置条件规则?例如:

$("#form2").validate( {
    rules: {
        inputVal: {
            //if condition = true, A:true, else run B:true
        }
    }
     ...
});

1 个答案:

答案 0 :(得分:2)

  

是否可以根据不同的方法在字段上设置条件规则?

不,您无法根据.validate()方法中的不同条件设置不同的规则。每个字段的对象字面值只能包含逗号分隔的key:value对列表,表示所需的方法和参数。

但是,您可以使用depends属性有条件地为每个方法设置参数,通过打开或关闭规则来有效地实现相同的目的......

$("#form2").validate( {
    rules: {
        inputVal: { // <- field name
            method_A: 
                depends: function(element) {
                    // activate/disable method A
                    return (condition) ? true : false;
                }
            },
            method_B: 
                depends: function(element) {
                    // disable/activate method B
                    return (condition) ? false : true;
                }
            }
        }
    },
     ...
});

DEMO:http://jsfiddle.net/nL2sk069/

否则,您可以简单地编写一种新方法,该方法结合了方法A和A的功能。 B,只是评估你的状况。

var message;

$.validator.addMethod('method_C', function(value, element, param) {
    var result;
    if (condition) {
       // validate value as per A
       result = (value === "A") ? true : false;  // (pass or fail)
       message = "custom message A";
    } else {
       // validate value as per B
       result = (value === "B") ? true : false;  // (pass or fail)
       message = "custom message B";
    }
    return this.optional(element) || result;
}, function() { return message; });

DEMO:http://jsfiddle.net/3uheeetx/