【问题标题】:Adding data-bv-trigger="null" make bootstrapvalidator works only one time添加 data-bv-trigger="null" 使 bootstrapvalidator 只工作一次
【发布时间】:2019-04-20 12:01:18
【问题描述】:

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

将按钮与引导验证器绑定
$(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
    });

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

【问题讨论】:

  • 我已经使用了你的代码。我收到了这个引用错误。$element is not defined
  • 在名为“元素”的变量中设置字段的引用或直接发送它来代替$(element)

标签: jquery bootstrapvalidator


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 2019-05-14
    • 2017-08-19
    • 1970-01-01
    • 2017-01-06
    • 2018-06-22
    相关资源
    最近更新 更多