添加 data-bv-trigger="null" 使 bootstrapvalidator 只工作一次

Adding data-bv-trigger="null" make bootstrapvalidator works only one time

我正在使用 bootstrap 验证器回调来验证字段。我还想仅在单击按钮时触发 bootstrap 验证器。所以我使用

将按钮与 bootstrap 验证器绑定
$(document).ready(function () {
    $('#mybtn').click(function () {
        $('#formId').bootstrapValidator('validate');
    });
});

但问题是验证器仅在第一次触发,然后如果验证为假,它会显示错误消息,然后如果没有通过单击该按钮再次触发。如果为真,则相应的功能有效。

这是我的html

<form id="formId">
    <input type="text" name="Iname" data-bv-trigger='null'/>
</form>

这是我的验证器

$('#formId').bootstrapValidator({
        fields: {
            Iname: {
                validators: {
                    callback: {
                        callback: function (value, validator, $field) {
                          if(!isValidData(value)) {
                                return {
                                    valid: false,
                                    message: "invalid message"
                                };
                            }
                            else {
                                return { valid: true };
                            }
                        }
                    }
                }
            }
        }

    }).on('success.form.bv', function (e) {
        e.preventDefault();
        //Do corresponding operation
    });

我只想在单击按钮时触发 bootstrap验证器。如果我省略 data-bv-trigger 属性,验证器会在该特定字段的按键上触发,但一切正常。 最初我虽然它取消绑定我的点击事件。但是我错了。它实际上触发了 bootstrap 验证器,但验证不起作用。

我的需求已经解决了。通过调试 bootstrapValidator.js 完成调查后,我发现在验证元素后 bootstrap 通过添加数据属性在该元素上保留标记(不知道它存储 attr 的位置或什么值的详细信息stored) 仅在我们使用 data-bv-trigger 属性实际输入的事件时重置。默认情况下,它会在该元素的按键事件上重置该属性。同时它还验证字段并显示错误(如果有)。 但是如果我们设置 data-bv-trigger="null",在一次验证之后数据属性永远不会重置。因此,对该元素的任何进一步验证从未发生过。 要解决问题,如果得到如果绑定我的按钮单击 revalidateField 然后它将强制验证提交。这是语法

$(document).ready(function () {
   $('#mybtn').click(function () {
       $('#formId').bootstrapValidator('revalidateField', $(element));
    });
});