jQuery Validator自定义方法

你能看一下http://jsbin.com/osolo/吗?

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

在自定义validation方法中的行

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

从被validation的元素中获取元数据,我想要做的就是使用

 data.validateOptions.regex 

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

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

我想用

 data.validateOptions.message 

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

谢谢

单次

我认为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); })(); 

怎么样创建一个闭包?

 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吗?