1

你能看看这个http://jsbin.com/osolo/吗?

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

在自定义验证方法中,该行

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

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

data.validateOptions.regex

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

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

我想用

data.validateOptions.message

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

谢谢

OneShot

4

2 回答 2

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);
})();
于 2010-08-31T03:44:43.867 回答
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只是通过引用传入吗?

于 2009-10-28T13:39:36.167 回答