【发布时间】:2016-12-22 21:20:27
【问题描述】:
我有一个非常简单的问题:有一个带有clear form 按钮的表单。当我单击它时,所有字段都会重置。但我还有一个额外的验证规则:至少应该填写一个额外的字段。清除后,它们当然都是空的,但我不想看到这些验证消息。我希望它清除整个表单,隐藏所有验证消息等等。这是我的代码:
$("a[data-clear]").click(function (event) {
var now = new Date();
$("#report_search section:gt(0) input").val("");
$("#includeDerived").prop("checked", true);
$("#includeApp").prop("checked", true);
$("#includeOrg").prop("checked", false);
$("input[name='FromDate']").datepicker().datepicker("setDate", now.dateAdd("year", -1));
$("input[name='ToDate']").datepicker().datepicker("setDate", now);
$("form").validate().resetForm();
event.preventDefault();
});
我在页面上只有一个表单,所以多个表单不是问题。
期望的结果:表单已清除,验证消息未显示。
实际结果:表单被清除,验证消息仍然存在。
检查字段是否填写的示例规则:
jQuery.validator.addMethod("isSufficientInfo",
function (value, element, params) {
var hasPersonInfo = $("input[name='LastName']").val() && $("input[name='FirstName']").val();
if (hasPersonInfo) {
return true;
}
var hasDocInfo = $("select[name='D']").val() && $("input[name='C']").val() && $("input[name='E']").val();
if (hasDocInfo) {
return true;
}
return $("input[name='A']").val() || $("input[name='B']").val();
}, "File some fields");
$("#IsEnoughInfo").rules("add", { isSufficientInfo: "" });
【问题讨论】:
-
看起来这不适用于 Bootstrap 3(如果您正在使用它)。无论哪种方式,您都可以通过删除错误类来隐藏错误,直到您再次验证。 How to clear Jquery validation error messages
-
您收到错误消息是因为
$("form").validate().resetForm();行运行您的验证并生成错误消息。您必须重写逻辑以验证验证器的 submitHandler 中的验证是否适用于您的自定义逻辑。 -
@MeghanArmes 我没有在这个项目中使用引导程序。我当然可以清除
.field-validation-error字段中的 html,但它看起来很 hacky。我认为有一些适当的方法可以做到这一点。 -
如果您使用的是我提到的同一个库,那么您可能需要查看resetForm API 调用。
-
我认为https://jsfiddle.net/1u0tccgg/ 更清楚地描述了您的问题。
标签: javascript jquery forms validation