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”])