【问题标题】:jQuery Validator custom methodjQuery Validator 自定义方法
【发布时间】:2009-10-28 10:55:10
【问题描述】:

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

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

在自定义验证方法中一行

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

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

data.validateOptions.regex

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

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

我想使用

data.validateOptions.message

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

谢谢

一枪

【问题讨论】:

    标签: jquery validation jquery-validate


    【解决方案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);
    })();
    

    【讨论】:

      【解决方案2】:

      创建一个闭包怎么样?

      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不就只是通过引用传入了吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多