【发布时间】:2018-04-19 22:32:44
【问题描述】:
我有一个带有电子邮件字段和“获取时事通讯”复选框的表单。
<form method="post" class="form-horizontal" action="">
<input class="form-control" type="text" id="Email" name="Email" value="test@test.com" />
<span class="text-danger field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span>
<input data-val="true" id="GetNewsletter" name="GetNewsletter" type="checkbox" value="true" />
</form>
电子邮件字段最初是可选的,但如果用户选中获取时事通讯复选框,则为必填项。 我使用 jquery 验证在客户端添加了这个。
$("#GetNewsletter").change(function () {
var checked = $(this).prop("checked");
if (checked) {
$('#Email').rules('add', { //set required rule
required: true,
messages: {
required: "Email is required."
}
});
}
else {
$('#Email').rules('remove', 'required'); //remove rule and call valid()
$('#Email').valid();
}
});
如果未选中该复选框,我会删除规则并调用 valid() 来重置输入的状态。不幸的是,这不会删除验证消息。
是否有清除验证消息的内置方法?我想避免操纵标记,例如删除/添加验证类。
【问题讨论】:
-
还有其他问题。删除规则后调用
.valid()应该会删除消息。 -
你可以吗?说真的,你有责任正确地证明这个问题。
标签: jquery asp.net-mvc jquery-validate unobtrusive-validation