2010-09-26 95 views
8

我正在使用jQuery验证插件来验证表单。你知道如何强制重新验证以前成功字段?jQuery验证插件:如何强制验证以前有效的字段?

我已经使用以下检查尝试了.FORM功能(这是用户之后进行点击“提交”):

if ($('#form1').validate().form()==false) 
{ 
    formValid = false; 
} 

然而,看来上面的代码不会重试验证这样的字段已经被成功验证(即在他们旁边打勾)不再被检查。

原因想重试先前成功的领域重新确认的是,他们依靠远程验证和结果(成功或失败),可以在离开现场,并点击提交按钮,用户之间切换。 (这适用于'用户名'字段)。

在情况下,它会影响我有多种形式来验证(为简单起见,在上面的代码段我仅指“#form1中”)的答案。

预先感谢任何建议,

罗布

回答

17

验证的远程场状态通过$.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")选择范围缩小到只有你想要的字段的特定字段,使其多一点效率。

+0

优秀 - 这完全清除验证,感谢尼克......虽然另一个问题也随之而来!因为它现在正在重新验证所有表单,所以在javascript中出现错误:“无法加载资源:取消”。只有在页面上有多个表单时(这是用户驱动的操作,因为表单是动态创建的),才会出现此问题。有什么建议么? – Rob 2010-09-26 17:19:20

+0

@Rob - 我只会用这个清除远程选项,它会节省最头痛的问题,你能用比上面选择更具体的选择器吗?此外,我只会重新验证您提交的那个。 – 2010-09-26 17:23:35

+0

从一些调试看来该“未能加载资源”错误发生时.validate()。形式()被同时要求与相同名称的两个形式输入。我需要检查提交的所有输入,以便即使有最具体的选择器仍然会产生问题。如果我叫.validate()手动不会发生错误。形式()上的每个顺序与用户驱动的动作形式(例如点击“验证”按钮)......如此看来我需要验证序列形式(即只有在成功验证第一个表单后才会调用下一个表单的验证)......任何建议? – Rob 2010-09-27 12:42:23