引导验证程序-仅部分验证

Bootstrap Validator - validating only partially

本文关键字:验证 仅部 程序      更新时间:2023-09-26

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

我有一个很大的<form>,有几个组,我们称之为"掩码"。每个掩码由几个"字段"组成。每个字段可以是正常的<input><select>等。这些字段中的每个字段都有特定的规则,如字段_1可以有requireddata-minLength="5",字段_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()有效,只需激活按钮,用户就可以立即发送。

谢谢!

好吧,经过2个小时的搜索和尝试,我最终完成了以下操作:

  1. 加上选项disable,设置为false:

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

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

  1. 在min.js中添加了以下内容,以确保JUST FOR THIS VERY FORM,忽略onSubmit()验证以使其能够发送,即使它还不是100%有效的。

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

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

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