【问题标题】:jQuery validator add method: custom messagesjQuery 验证器添加方法:自定义消息
【发布时间】:2011-07-08 22:20:19
【问题描述】:

我正在使用以下代码在 jquery 验证插件的 add 方法中显示自定义消息。我参考了这个链接:http://www.mainframes.co.uk/index.php/2011/04/07/jquery-form-validator-custom-validation-method-using-addmethod-for-validating-date-of-birth-dob/

$.validator.addMethod("nameId",function(value,element){

            var result = true;
        //check if pattern matches
                var pattern = new RegExp(<pattern>);                
            if(pattern.test(value)){            
                    //get availability via ajax call
                    $.ajaxSetup({
                        async: false,   
                        "error":function() {   
                            alert("error");
                    }});
                    $.getJSON("<url>", 
                    {
                        param: value
                    },
                    function(data) {

                            if(condition){
                                result = true;
                            }else{
                                $.validator.messages.nameId = "Msg 1";
                                    result = false;                     
                            }
                    });

            }else{
                                $.validator.messages.nameId = "Msg 2";
                                result = false;                         
            }
    return result;
 },"");

验证时不会显示任何错误。上面可能有什么问题...

【问题讨论】:

    标签: jquery validation methods add


    【解决方案1】:

    如果将 .getJSON 调用放在 .ajaxSetup 的成功回调函数中会发生什么?像这样:

    $.validator.addMethod("nameId",function(value,element){
    
        var result = true;
    
        var pattern = new RegExp(<pattern>);
    
        if(pattern.test(value)){            
            //get availability via ajax call
            $.ajaxSetup({
                async: false,
                "success": function() {
                    $.getJSON("<url>", 
                    {
                        param: value
                    },
                    function(data) {
                        if(condition){
                            result = true;
                        }else{
                            $.validator.messages.nameId = "Msg 1";
                                result = false;                     
                        }
                    });
                },
                "error":function() {   
                    alert("error");
                }
            });
    
        }else{
            $.validator.messages.nameId = "Msg 2";
            result = false;                         
        }
        return result;
     },"");
    

    【讨论】:

    • 我仍然看到相同的空白消息(因为末尾的消息是“”)。如何使用自定义消息覆盖此消息?谢谢!
    • 如果我对问题的理解正确,我认为这里发布的答案涵盖了您描述的问题:forum.jquery.com/topic/…
    【解决方案2】:

    在返回结果行之前添加:

    $.validator.messages.myvalidator = customError;
    

    【讨论】:

      【解决方案3】:

      您不能在验证方法中使用异步回调。

      【讨论】:

      • 你能告诉我如何使用远程实现这一点,基于 if/else 条件的多条消息。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2017-05-30
      • 1970-01-01
      相关资源
      最近更新 更多