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