1

我创建了这个用于管理正则表达式的自定义方法:

$.validator.addMethod(
    "regex",
    function(value, element, regexp) {
        var re = new RegExp(regexp);
        return this.optional(element) || re.test(value);
    },
    "Text not valid"

);

然后我使用了我的方法:

$(function() {
  $("#registerform").validate({
    rules: { password: {required: true, regex: "^[a-zA-Z09]+$"} },
    messages: {
    password: {regex: "A password can contain only letters or digits"}
    }
  });
});

问题是,虽然我可以在 validate() 调用中覆盖标准验证方法(如必需)的默认消息,但我不能为自定义方法执行此操作。因此,我的页面将显示“文本无效”而不是“密码只能包含字母或数字”。如何提供默认消息并允许覆盖它?

4

1 回答 1

1

如果您想始终在.validate()选项中设置自定义消息,只需将消息从自定义方法中删除即可。

$.validator.addMethod(
    "regex",
    function(value, element, regexp) {
        var re = new RegExp(regexp);
        return this.optional(element) || re.test(value);
    }
);

如何提供默认消息并允许覆盖它?

我不相信这是可能的。毕竟,可以合理地假设,既然已经在使用他们自己的自定义方法,那么他们为什么还要覆盖它。

您唯一的选择是在自定义方法中使用消息或在您的.validate()选项中设置消息,但不能同时使用两者。

于 2012-11-27T01:54:21.053 回答