$('#form').validate({ onfocusout: false,onkeyup: false,onclick: false,success: function (){ $('#username').addClass('input-validation-confirmation'); } }); $('#username').rules("add",{ onfocusout: false,required: true,email: true,remote: { url: function,type: 'GET',dataType: 'json',traditional: true,data: { username: function () { return $('#username').val(); } },dataFilter: function (responseString) { var response = jQuery.parseJSON(responseString); currentMessage = response.Message; if (response.State == 0) { currentMessage = currentMessage + 0; return false; } return 'true'; },beforeSend: function (response) { showLoadingIndicator($('#username')); },complete: function () { hideLoadingIndicator($('#username')); } } });
这是尝试做的是使用相同的验证元素(为了与其他框架一起使用)来显示错误和成功方法.
我的问题是我的规则的成功方法在远程验证完成之前被触发.我尝试了几种方式设置消息,但似乎没有在验证成功时调用自定义消息参数.
当使用远程和模式验证规则的混合时,是否有人知道使用验证错误字段的成功和错误消息的其他方法?
编辑:
我现在明白我期待在错误的时间成功举办.我需要在验证完成后触发的事件(未提交).有没有这样的事件?
解决方法
$('#username').rules("add",{ onfocusout: false,remote: { ... },messages: { ... },success: function (label) { ... } });
这里的问题是onfocusout,onkeyup和成功不是“规则”.只有单个“规则”和消息选项可以放在.rules(‘add’)方法中.
$('#username').rules("add",{ required: true,messages: { remote: "custom remote message" } });
请参阅.rules()方法的文档:http://jqueryvalidation.org/rules
onfocusout,onkeyup和success是仅在.validate()方法内部的“选项”,该方法仅附加到< form>元件.
至于远程的“自定义”消息:As per the docs,此错误消息将自动成为从您的服务器返回的消息…没有特殊设置.
根据评论编辑并更新OP:
你的代码:
$('#form').validate({ onfocusout: false,success: function (){ $('#username').addClass('input-validation-confirmation'); } });
你说,“尽管如此,通过更新的代码(见上文),我从未见过成功事件.”
您已禁用此表单上的所有活动.触发此字段验证的唯一事件是单击提交按钮.究竟什么时候你会“看到”成功火上浇油?
换句话说,当您禁用所有其他事件时,提交是唯一可以触发验证测试的事件.
编辑基于另一个OP更新:
“I now understand I was expecting a success event at the wrong time. I
need an event that is fired once validation has completed (not
submitted). Is there any such event?”
成功不是“事件”. “事件”是点击,模糊,键盘等(onkeyup,onfocusout和onclick是控制此插件事件的选项)
•如果需要每次字段通过验证时触发的“回调函数”,则可以使用成功.
•如果需要在表单通过验证时触发的“回调函数”,则可以使用submitHandler.但是,这也是在提交表单时.
•如果要“测试”整个表单或单个字段以查看它是否有效而不提交表单,则可以使用.valid()“方法”.
$('#username').valid(); // for one field // or $('#form').valid(); // for the whole form // you can also... if ($('#form').valid()) { //do something if form is valid }