jQuery Validation Plugin:如何强制validation以前有效的字段?
我正在使用jQuery Validation插件来validation表单。 您知道如何在以前成功的字段上强制重新validation吗?
我使用以下检查尝试了.form函数(这是在用户点击’submit’后执行的):
if ($('#form1').validate().form()==false) { formValid = false; }
但是,似乎上面的代码不会重试validation,因此不会再次检查已成功validation的字段(即在它们旁边打勾)。
想要在以前成功的字段上重试重新validation的原因是它们依赖于远程validation,并且结果(成功或失败)可以在离开字段的用户和单击提交之间发生变化。 (这适用于’用户名’字段)。
如果它影响答案我有多个表单要validation(为简单起见,在上面的代码片段中我只引用’#form1’)。
提前感谢任何建议,
抢
远程字段的validation状态通过$.data()
与您要validation的元素一起存储,因此您可以使用.removeData()
清除它……所以它被强制重新validation:
$("#form1 :input").removeData("previousValue"); //now call .valid()
这会强制检查值是否已更改(我们需要重新validation)为true
:
//This code is in the validation plugin for remote: var previous = this.previousValue(element); if (previous.old !== value) { //this is normally false, since it hasn't changed
如果只有特定的字段需要重新validation,就像你说的用户名一样,你可能想要将$("#form1 :input")
选择器缩小到你想要的字段,以使它更有效率。
当我在研究使用jQuery远程不显眼的validation时,我发现了这个答案。 它不是世界上最好的文档主题,也不是没有怪癖。 所以我最后写了一篇关于我学到的东西的博客文章。 链接在这里,以防有用:
http://icanmakethiswork.blogspot.com/2012/03/jquery-unobtrusive-remote-validation.html