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

Conditional rules on the fields based on jQuery.validator.addMethod

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

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

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

Is it possible to set conditional rules on the fields based on different methods?

不行,不能在.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;
                }
            }
        }
    },
     ...
});

演示:http://jsfiddle.net/nL2sk069/


否则,您可以简单地编写一个结合了方法 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; });

演示:http://jsfiddle.net/3uheeetx/