Bootstrap Validator - 仅部分验证

时间:2015-12-14 20:45:57

标签: javascript jquery forms validation bootstrapvalidator

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

我有一个包含多个组的大<form>,我们将其命名为“掩码”。每个掩码由几个“字段”组成。每个字段都可以是正常的<input><select>等。每个字段都有特定的规则,例如field_1可以有requireddata-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()有效,请不要自动发送它,只激活按钮,以使用户能够立即发送它。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

    $(document).ready(function () {
            $("#inputForm").validator({
                disable: false
            });
    });
    
  2. 这将保证提交按钮始终可以点击。但是:这仍然会导致调用验证器的onSubmit()函数,说“停止否,这是无效的”。

    1. 在min.js中添加以下内容以确保只有这个非常形式,忽略onSubmit()验证才能发送,即使它还没有100%有效。

      c.prototype.onSubmit=function(a){if(c.attr("id")!="inputForm"){this.validate(),(this.isIncomplete()||this.hasErrors())&&a.preventDefault()}}
      
    2. 这将使验证器忽略#inputForm形式的onSubmit()

      警告:请勿正常使用,因为这当然不是验证器的用途。这将js验证器简化为仅仅是一个图形验证器简单地说“嘿这里有问题,但好吧,如果你想发送它,无论如何,做它”。如果这样做,你必须像我们一样抓住服务器端。