jQuery Validator自定义方法

时间:2009-10-28 10:55:10

标签: jquery validation jquery-validate

你可以看一下这个http://jsbin.com/osolo/吗?

如果你在Min Age中输入一个字母而不是一个数字然后点击使用jquery验证器在自定义验证方法中使用正则表达式提交此验证,这可行,但我现在希望使它更有活力。

在自定义验证方法中的行

var data = $(element).metadata(); 

从正在验证的元素中获取元数据,我想要做的是使用

data.validateOptions.regex

作为要测试的正则表达式(我看不出这是一个问题),我能看到的问题是,如果字段没有验证,而不是使用调用时提供的消息

jQuery.validator.addMethod(name, method, message)

我想用

data.validateOptions.message

作为自定义方法中的错误消息,有人能指出我正确的方向吗?

由于

单次

2 个答案:

答案 0 :(得分:1)

我认为Alex的答案不起作用,因为字符串在JS中是不可变的。

尽管如此。从Alex的代码开始,如果您创建一个包含数据对象(或只是一个消息字符串)的闭包以及一个返回该消息的函数,您可以将该函数作为第三个参数传递给addmethod调用。 像这样:

(function() {
    var data = {};
    var messager = function() {
        return data.validateOptions.message;
    };
    jQuery.validator.addMethod("perorgproperty", function(value, element) { 
        debugger; 
        //alert('testing perorgproperty'); 
        data = $(element).metadata();
        return this.optional(element) || /^\d+$/i.test(value); 
    }, messager);
})();

答案 1 :(得分:0)

创建闭包怎么样?

var data = {};
jQuery.validator.addMethod("perorgproperty", function(value, element) { 
    debugger; 
    //alert('testing perorgproperty'); 
    data = $(element).metadata(); 

    return this.optional(element) || /^\d+$/i.test(value); 
}, data.validateOptions.message); 

只要在消息之前评估函数,message是否只能通过引用传递?