jQuery验证:删除规则后仍然触发验证(对于select元素)

时间:2011-05-30 16:46:07

标签: jquery jquery-validate

我在点击“保存”按钮时动态添加验证规则 - 我正在为文本输入和选择元素执行此操作:

  

$(“#my-txt”)。规则(“添加”,{必填:   是的,消息:{required:“text   必需“}});

     

$(“#my-ddl”)。规则(“添加”,{必填:   是的,消息:{required:“selection   必需“}});

添加规则后,我手动触发验证(.valid()),然后对元素执行.rules("remove")删除规则。我这样做是因为我希望错误保持不变,直到用户再次单击“保存”并重新触发验证。

这样工作正常并且错误显示正确... 但是 ...而文本输入的错误无论如何都会保持不变,当我点击下拉列表时相关的错误消失(我可以看到显示:没有在包含错误的范围内注入),与任何选择无关(一旦我点击控件就会消失,而不是当我关闭时)。我希望下拉的错误不会被隐藏,与文本输入字段相同。

规则似乎实际上已经消失了,因为如果我返回并在select元素(value =“”)上选择默认值,它就不会显示错误消息。

这让我感到困惑 - 我正试图找到一种方法让两个领域以同样的方式运作。

任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:1)

再次查看jquery-validate API之后,我发现没有选项可以显示错误,处理显示的区别必须在插件代码中。祝你好运。 :)

解决此问题的另一种方法是手动保存jquery-validate添加到您的DOM中,将其删除并自行重新附加。

最后,我更愿意看看我的输入何时有效而无需重新点击某些按钮。特别是在奇怪,复杂的密码要求的情况下。

答案 1 :(得分:0)

除了通过jquery.validation函数删除此必需项之外,您还可以从元素中删除“required”类。通过这样做,jquery.validation将跳过该元素,因为它没有附加所需的类。

答案 2 :(得分:0)

呼叫

$('#formid').removeData('validator')

这将删除表单

的验证