我正在使用带有验证和不显眼的验证插件的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
});
答案 0 :(得分:0)
动态更新规则后,如果表单有任何待处理错误,您必须使用附加到整个表单的the .valid()
method以编程方式触发验证测试,或者附加到单个字段(s) )。通过执行此操作,将相应地更新或删除任何错误消息。
在整个表单上触发验证测试。与单击“提交”按钮时的情况类似。
$('#myform').valid();
触发输入元素的验证测试。与离开焦点时发生的情况类似。
$('input[name="myinput"]').valid();
如果你需要附加到多个输入元素的选择器,那么你需要一个jQuery .each()
。
$('.myInputs').each(function() {
$(this).valid();
});