关于Bootstrap验证器的问题。我正在使用这个插件:Validator
我有一个包含多个组的大<form>
,我们将其命名为“掩码”。每个掩码由几个“字段”组成。每个字段都可以是正常的<input>
,<select>
等。每个字段都有特定的规则,例如field_1可以有required
和data-minLength="5"
,field_2可以有maxlength="30"
等等。
通缉行为:如果其中一个组/掩码本身有效,请再次启用提交按钮,以便我可以部分发送表单,不要等到表单的所有部分都填满。问题:提交按钮完全禁用,直到我从COMPLETE表单中完成所有验证器规则,这不是我想要的。如果整个表单中的一个或多个组本身有效,请激活提交按钮。
我尝试了什么:
$("#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()
有效,请不要自动发送它,只激活按钮,以使用户能够立即发送它。
谢谢!
答案 0 :(得分:0)
好的,经过2个小时的搜索和尝试,这就是我最终做的事情:
抛出选项disable,设置为false:
$(document).ready(function () {
$("#inputForm").validator({
disable: false
});
});
这将保证提交按钮始终可以点击。但是:这仍然会导致调用验证器的onSubmit()
函数,说“停止否,这是无效的”。
在min.js中添加以下内容以确保只有这个非常形式,忽略onSubmit()
验证才能发送,即使它还没有100%有效。
c.prototype.onSubmit=function(a){if(c.attr("id")!="inputForm"){this.validate(),(this.isIncomplete()||this.hasErrors())&&a.preventDefault()}}
这将使验证器忽略#inputForm形式的onSubmit()
。
警告:请勿正常使用,因为这当然不是验证器的用途。这将js验证器简化为仅仅是一个图形验证器简单地说“嘿这里有问题,但好吧,如果你想发送它,无论如何,做它”。如果这样做,你必须像我们一样抓住服务器端。