【发布时间】:2015-12-14 20:45:57
【问题描述】:
又是一个关于 Bootstrap 验证器的问题。我正在使用这个插件:Validator
我有一个大的<form> 有几个组,我们将其命名为“掩码”。每个掩码由几个“字段”组成。每个字段可以是普通的<input>、<select> 等。每个字段都有特定的规则,例如 field_1 可以有required 和data-minLength="5",field_2 可以有maxlength="30" 等。
想要的行为:如果其中一个组/掩码本身有效,请再次启用提交按钮,以便我可以部分发送表单,不要等到表单的所有部分都填写完毕。问题:提交按钮完全禁用,直到我完成了 COMPLETE 表单中的所有验证器规则,这不是我想要的。如果整个表单中有 1 个或多个组本身有效,请激活提交按钮。
我尝试了什么:
$("#inputForm").on("change", function () {
$("#inputForm").find("*[id^=mask_]").each(function() {
var valid = true;
$(this).find("input[id^=field_], select[id^=field_]").each(function() {
if(!$(this).val()) {
valid = false;
}
});
if(valid) {
$("#inputForm").find(":submit").prop("disabled", false);
$("#inputForm").prop("novalidate", false)
}
});
});
如何做到这一点?我的代码确实到达了if(valid) 子句,但不会重新激活提交按钮......另外:不要自动发送它,如果一组通过在表单上调用submit() 是有效的,只有激活按钮才能让用户现在可以发送它。
谢谢!
【问题讨论】:
-
您想要的行为与引导程序的表单验证冲突。在所有项目都经过验证之前,Bootstrap 不会让您提交表单。很好奇,为什么您希望用户能够提交部分完成的表单?如果表格真的很长,例如简历,税收等,您可以考虑将其分解为步骤(每个步骤都有自己的表单标签)并让用户执行每个步骤,通过 ajax 保存表单数据,然后才能进入下一个表单。
-
是的,表格非常长,不,我不能把它拆开。由于数据/输入字段已经分为几组,我们认为最好让用户部分发送。在整个项目中,出于几个原因需要这样做。有没有办法让验证器验证东西并返回反馈但仍然让我使用提交按钮?...
-
您希望引导程序来强制执行表单验证而不是强制执行表单验证。这些目标相互冲突。您可以在 if(valid) 条件中执行 ajax 请求,以便可以暂时保存用户的信息,直到他们纠正了所有错误。
-
不,我只希望验证器通过 has-feedback 和这些错误范围向用户显示错误。此表格没有其他内容。必须有一种方法可以直观地验证并且仍然能够单击提交按钮?
-
您希望引导程序来强制执行表单验证而不是强制执行表单验证。你不能告诉 bootstrap 需要一个表单域并且仍然能够提交表单。如果你能提供你的完整代码,也许是一个 JS fiddle 示例,你可能会得到帮助,编写一些自定义的东西来完成你想要的。
标签: javascript jquery forms validation bootstrapvalidator