【问题标题】:jquery validator addmethod custom messagejquery 验证器 addmethod 自定义消息
【发布时间】:2009-06-10 15:32:19
【问题描述】:

我为 jquery 的验证器插件创建了一个方法,其工作方式类似于远程规则。不同之处在于我想显示动态错误消息(基于 ajax 响应)。

jQuery.validator.addMethod("duplicate", function(value, element, params) { 
    var object_settings = this.settings;
    params.data[$(element).attr("name")] = value;
    $.post(params.url, params.data, function(response) {
        if (response == 'true'){ return true; }
        else {
            object_settings.messages[element.name] = response;
            return false;
        }
    }, 'text');
}, '');

它可以工作......有点......它设置消息,但最初不显示它(如果您再次验证该字段,则会显示消息)。

有什么建议吗?

(也许远程规则提供了这个功能……我在文档中找不到任何东西)

【问题讨论】:

    标签: jquery validation


    【解决方案1】:

    解决方法在这里....需要调用对象的showErrors函数:

    jQuery.validator.addMethod("duplicate", function(value, element, params) { 
        var validator = this;
        params.data[element.name] = value;
        $.post(params.url, params.data, function(response) {
            if (response == 'true'){ return true; }
            else {
                var errors = {};
                errors[element.name] =  response;
                validator.showErrors(errors);
                return false;
            }
        }, 'text');
    }, '');
    

    取自 jquery.validate.js 中的“远程”(第 917 - 919 行)

    【讨论】:

    • 当我这样做时,默认错误消息会覆盖自定义消息。
    【解决方案2】:

    也在寻找解决这个问题的方法,发现了这个......

    在原始示例中,如果您更改此行:

    object_settings.messages[element.name] = response;
    

    到这里:

    $.validator.messages.duplicate = response;
    

    这对我有用。我在这里找到了它: http://blogs.teamb.com/craigstuntz/2009/01/15/37923/

    【讨论】:

      【解决方案3】:

      我按照网站http://blogs.teamb.com/craigstuntz/2009/01/15/37923/#comment-125774中提到的流程,成功了。

      您必须使用动态消息调用该方法,以便它显示该消息。例如

      $.validator.addMethod("validatePremium", function(value, element, param) {
      
          if( Condition )    
      
           {
             $.validator.messages.validatePremium = "your message here";
             //enter code here
             //...
             return false;
           }
      
          }, $.validator.messages.validatePremium);
      

      【讨论】:

      【解决方案4】:

      这对我有用

      var errorMsg = '', $valid = false;
      $.validator.addMethod("methodName",function(val, elem){
         $.ajax({
            url:'your_script.php',
            type:"POST",
            dataType:"json",
            data : {},
            success:function(response){
               if(response.success == false){
                  errorMsg = response.msg;
                  $valid = response.success;
               }
               else{
                  $valid = true;
               }
            }
         });
         $.validator.messages["methodName"] = errorMsg;
         return $valid;
      },'');
      

      确保将“methodName”替换为您的方法名称 在这种情况下,两个地方都“重复”(addMethod 函数第一个参数和 addMethod 函数体 $.validator.messages["methodName"])

      【讨论】:

        猜你喜欢
        • 2013-10-04
        • 1970-01-01
        • 1970-01-01
        • 2016-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多