Jquery 使用动态错误消息进行验证

Jquery validation with dynamic error message

我需要验证具有多个条件和不同错误消息的字段。我该如何解决这个问题?

$.validator.addMethod("customMethod", function(value, element) {
    var msg;
    if(cond1){
       msg = "msg1";
    }
    else if(cond2){
       msg = "msg2";
    }
    else if(cond3){
       msg = "msg3";
    }
}, msg);

你必须在 message 参数中传递一个匿名函数,因为你不能将 msg 从前一个匿名函数的结果传递到下一个参数(因为 msg,在您的上下文中,仅存在于特定的匿名函数范围内)。

$.validator.addMethod("customMethod", function(value, element) {
    // Do your usual stuff here.
}, function (params, element) {
    var msg;
    if(cond1){
       msg = "msg1";
    }
    else if(cond2){
       msg = "msg2";
    }
    else if(cond3){
       msg = "msg3";
    }
    return msg;
});

但是,您可以像这样在全局范围内声明 msg

var msg;
var dynamicErrorMsg = function () { return msg; }
$.validator.addMethod("customMethod", function(value, element) {
    if(cond1){
       msg = "msg1";
    }
    else if(cond2){
       msg = "msg2";
    }
    else if(cond3){
       msg = "msg3";
    }
}, dynamicErrorMsg);

这也行。