如何在添加/删除规则后使用jQuery重新验证表单?

时间:2015-07-24 17:26:46

标签: javascript jquery asp.net-mvc forms jquery-validate

我正在使用带有验证和不显眼的验证插件的jQuery作为ASP.NET MVC 5堆栈的一部分。

我的表单包含所谓的“表单组”(一组字段),我有一个复选框,用于控制应启用/禁用哪个表单组。

我有两个表单组,两个组都有自己的必填字段。

当我修改复选框选中状态时,我必须启用/禁用组 - 并为每个组动态添加/删除所需的验证规则。

不幸的是,验证消息和错误类没有从表单中删除。

我尝试通过重新验证表单/重新设置表单来手动删除它 - 直到现在没有运气。

function enablePersonGroup() {
    app.enableFormGroup('.person-group');
    $('input[name=catalogValueId]').rules('add', { 
         required: true, 
         messages: { 
             required: requiredErrorMessage 
         } 
    });
}

function disablePersonGroup() {
    app.disableFormGroup('.person-group');

    // I CAN REMOVE THE RULES, BUT THE ERROR MESSAGE REMAINS:
    //$('input[name=catalogValueId]').rules('remove', 'required'); 
    delete $('form').validate().settings.rules['catalogValueId'];
}

 $(selector).change(function () {
     var type = $(selector+ ':checked').val();
     switch (type) {
         case 'Anonym':
             enableAnonymGroup();
             disablePersonGroup();
             break;
         case 'Person':
             disableAnonymGroup();
             enablePersonGroup();
             break;
     }
     $("form").validate().resetForm(); // DOESN'T HELP, ERROR MESSAGE REMAINS
});

1 个答案:

答案 0 :(得分:0)

动态更新规则后,如果表单有任何待处理错误,您必须使用附加到整个表单的the .valid() method以编程方式触发验证测试,或者附加到单个字段(s) )。通过执行此操作,将相应地更新或删除任何错误消息。

在整个表单上触发验证测试。与单击“提交”按钮时的情况类似。

$('#myform').valid();

触发输入元素的验证测试。与离开焦点时发生的情况类似。

$('input[name="myinput"]').valid();

如果你需要附加到多个输入元素的选择器,那么你需要一个jQuery .each()

$('.myInputs').each(function() {
    $(this).valid();
});
相关问题