重新提交错误表单时,Jquery Validator规则不会更新

时间:2014-02-24 21:36:20

标签: jquery submit validation validationrules

我有一个带有两个相互依赖的字段的表单,一个是两个单选按钮,另一个是文本字段。

当单选按钮选择了一个值时,应该需要文本字段。选择其他字段时,不需要。概念相当简单。

这是通过以下函数实现的,在表单提交时调用:

function validateForm(form, incremental) {
    ...
    validator = $(form).validate({
        ...
        rules:{
            "textfield-name":{
            required: $("input:radio[name=auth]:checked").val() == 'A'
        },
        ...
    });
    return validator.form();

因此,第一次提交表单时,这非常有效。如果选中允许空输入的无线电,则表单提交确定。如果选中其他按钮,则表单页面会将空白文本字段显示为错误。

但是,在提交了一个错误的表单,其中文本字段为空并且选中了一个值的单选按钮,如果我继续将文本字段留空但是更改单选按钮以允许空白字段,表单仍然不提交,文本字段仍然突出显示错误。

当我使用Firebug调试器逐步执行javascript时,我可以看到它通过表面上正在创建新验证器的validate()函数重新执行,我可以看到该字段的“必需”规则的表达式是正如预期的那样,在第二次提交时评估为false。然而,一旦验证代码逐步完成,我会在其设置中查看生成的验证器对象的规则集,并且它们保持不变。表单的Validator是以某种方式实例化后锁定的,还是有任何方法可以在验证运行之间成功更新它的规则集?

0 个答案:

没有答案