添加data-bv-trigger =“ null”使bootstrapvalidator只能工作一次

时间:2018-11-17 14:59:58

标签: jquery bootstrapvalidator

我正在使用引导程序验证程序回调来验证字段。我也想仅在单击按钮时触发引导程序验证器。因此,我使用

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

但是问题是验证器仅第一次触发,然后,如果验证为假,则会显示错误消息,然后单击该按钮不会再次触发。如果为true,则相应的功能正常工作。

这是我的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
    });

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

1 个答案:

答案 0 :(得分:0)

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

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