jqueryvalidation器addmethod自定义消息

我已经为jquery的validation器插件创建了一个方法,它的工作方式类似于远程规则。 不同之处在于我想显示动态错误消息(基于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'); }, ''); 

它工作……有点….它设置消息,但最初不显示它(如果你第二次validation字段,则显示消息)。

有什么建议?

(也许远程规则提供此function……我在文档中找不到任何内容)

这是解决方案….需要调用对象的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中的“remote”(第917行 – 第919行)

正在寻找解决方案,并发现这…

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

 object_settings.messages[element.name] = response; 

对此:

 $.validator.messages.duplicate = response; 

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

我已经按照网站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); 

这对我有用

 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 ”替换为您的方法名称,在这种情况下为“duplicate”(addMethod function 1st arg和addMethod函数体$ .validator.messages [“methodName”])