1

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

当单选按钮选择了一个值时,文本字段应该是必需的。When the other field is selected, it is not required. 概念上相当简单。

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

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在第二次提交时,正如预期的那样。然而,一旦验证代码被单步执行,我会在它的设置中查看生成的验证器对象的规则集,它们保持不变。表单的验证器是否在以某种方式实例化后被锁定,或者有没有办法在验证运行之间成功更新它的规则集?

4

0 回答 0