0

又是一个关于 Bootstrap 验证器的问题。我正在使用这个插件:验证器

我有一个大<form>的几个组,我们将其命名为“面具”。每个掩码由几个“字段”组成。每个字段都可以是 normal <input>,<select>等。每个字段都有特定的规则,例如 field_1 可以拥有requireddata-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()表单是有效的,只有激活按钮才能使用户能够发送现在它。

谢谢!

4

1 回答 1

0

好的,经过 2 小时的搜索和尝试,这就是我最终要做的:

  1. 抛出选项禁用,设置为false:

    $(document).ready(function () {
            $("#inputForm").validator({
                disable: false
            });
    });
    

这将保证提交按钮始终是可点击的。然而:这仍然会导致调用onSubmit()验证器的函数,说“停止不,这还不是有效的”。

  1. 将以下内容添加到 min.js 以确保仅针对这种非常形式,忽略onSubmit()验证以使其能够发送,即使它还不是 100% 有效。

    c.prototype.onSubmit=function(a){if(c.attr("id")!="inputForm"){this.validate(),(this.isIncomplete()||this.hasErrors())&&a.preventDefault()}}
    

这将使验证器忽略onSubmit()表单上的#inputForm。

注意:不要正常使用它,因为这当然不是验证器的用途。这将 js 验证器简化为只是一个图形验证器,简单地说“嘿,这里有问题,但是好的,如果你想发送它,那就去做吧”。如果这样做,您必须像我们一样在服务器端捕获这些东西。

于 2015-12-14T22:53:47.483 回答