Re-validate 输入单选按钮选择

Re-validate input on radio button selection

我目前有一个使用 jquery 验证的表单。该表单包含多个单选按钮("yes"、"no"),每个对应的 yes/no 单选按钮组都有一个描述文本框,如果用户选择 "Yes",则需要该文本框。像这样:

这是执行验证的方法:

$.validator.addMethod('conditionalrequired', function (value, element, params) {
    var input = $(params);
    var checked = input.prop('checked');
    if (checked) {
        return value != '' && value != "0";
    }
    return true;
});

$.validator.unobtrusive.adapters.add("conditionalrequired", ["boolpropertyname"], function (options) {
options.rules["conditionalrequired"] = "#" + options.params.boolpropertyname + 'Yes';

options.messages["conditionalrequired"] = options.message;

});

验证效果很好。我唯一的问题是当触发验证并显示错误消息时,选择 "No" 选项不会删除错误消息(尽管它不会阻止提交表单)。我需要做什么才能达到我想要的效果?

郑重声明,这是我为实现我的目标所做的工作 - 在 "No" 单选按钮单击事件中,我调用:

 var validator = $("form").validate();
 validator.element("#textboxName");

这会验证输入并删除验证消息。我在文档 here.

中找到了这个解决方案

radio 输入的 change 事件中,您可以调用 the .valid() method 来触发验证测试,这将根据需要切换相关的错误消息。

  • 当任何 radio 输入改变时触发。仅重新评估正在更改的 radio

    $('#myform input[type="radio"]').on('change', function() {
        $(this).valid();  // <- re-validate this one radio input
    });
    
  • 当任何 radio 输入改变时触发。立即重新评估所有 radio 个输入。

    $('#myform input[type="radio"]').on('change', function() {
        $('#myform input[type="radio"]').valid();  // <- re-validate every radio input
    });
    
  • 当任何 radio 输入改变时触发。立即重新评估整个表单。

    $('#myform input[type="radio"]').on('change', function() {
        $('#myform').valid();  // <- re-validate this entire form
    });