重新提交错误表单时未更新Jquery验证程序规则

重新提交错误表单时未更新Jquery验证程序规则,jquery,submit,validation,validationrules,Jquery,Submit,Validation,Validationrules,我有一个表单,有两个相互依赖的字段,一个是一组两个单选按钮,另一个是文本字段 当单选按钮选择了一个值时,文本字段应为必填字段。如果选择了其他字段,则该字段不是必需的。概念上相当简单 这已通过类似以下的函数实现,该函数在表单提交时调用: function validateForm(form, incremental) { ... validator = $(form).validate({ ... rules:{ "textf

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

当单选按钮选择了一个值时,文本字段应为必填字段。如果选择了其他字段,则该字段不是必需的。概念上相当简单

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

function validateForm(form, incremental) {
    ...
    validator = $(form).validate({
        ...
        rules:{
            "textfield-name":{
            required: $("input:radio[name=auth]:checked").val() == 'A'
        },
        ...
    });
    return validator.form();
因此,在第一次提交表单时,这种方法非常有效。如果选中允许空输入的收音机,则表单提交ok。如果选中“其他”按钮,则表单页面将显示突出显示为错误的空文本字段

但是,在提交了一个错误的表单,其中文本字段为空,并且选中了指定值的单选按钮之后,如果我继续操作并将文本字段保留为空,但将单选按钮更改为允许空白字段,则表单仍然不会提交,并且文本字段仍然错误地高亮显示


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

图在为此进行了一整天的斗争后,我会在发布到此处10分钟后提出解决方案:)。将所需规则设置为返回布尔值而不是布尔表达式本身的函数似乎可以解决此问题。。。规则:{“textfield name”:{required:function(){return$(“input:radio[name=auth]:checked”).val()=='A';}。。。