我有一个带有两个相互依赖的字段的表单,一个是两个单选按钮,另一个是文本字段。
当单选按钮选择了一个值时,应该需要文本字段。选择其他字段时,不需要。概念相当简单。
这是通过以下函数实现的,在表单提交时调用:
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是以某种方式实例化后锁定的,还是有任何方法可以在验证运行之间成功更新它的规则集?