2011-07-08 65 views
0

我正在使用以下代码来显示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/jQuery验证程序添加方法:自定义消息

$.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; 
},""); 

在验证这并不显示任何错误。上面有什么可能是错误的...

回答

-1

你不能在验证方法中有异步回调。

+0

你能告诉如何实现使用远程此,有多个消息上的if/else条件为主。谢谢! – jqueryEnthusiast

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; 
},""); 
+0

我仍然看到相同的空白消息(因为最后的消息是“”)。如何用自定义消息覆盖此消息?谢谢! – jqueryEnthusiast

+1

如果我正确理解了这个问题,我认为这里发布的答案涵盖了您描述的问题:http://forum.jquery.com/topic/validation-plugin-changing-message-with-addmethod –

1

只是你的返回结果行之前补充一点:

$.validator.messages.myvalidator = customError;