Добавление data-bv-trigger = "null" заставляет загрузчик работать только один раз - PullRequest
0 голосов
/ 17 ноября 2018

Я использую обратный вызов валидатора начальной загрузки для проверки поля.Я также хочу запустить загрузчик валидатора только по нажатию кнопки.Поэтому я связываю кнопку с валидатором начальной загрузки, используя

$(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 голосов
/ 19 ноября 2018

Я решил свое требование.Проведя расследование путем отладки bootstrapValidator.js, я обнаружил, что после проверки начальной загрузки элемента оставьте отметку на этом элементе, добавив атрибут данных (не знаю подробно, где хранится атрибут или какое значение хранится), который сбрасывается только насобытие, которое мы фактически вводим, используя атрибут data-bv-trigger.По умолчанию он сбрасывает этот атрибут при нажатии клавиши этого элемента.В то же время он также проверяет поля и показывает ошибку, если таковые имеются.Но если мы установим data-bv-trigger = "null", после одной проверки атрибут attr никогда не сбрасывается.Так что никакой дальнейшей проверки этого элемента никогда не происходило.Чтобы решить проблему, если получится, что если привязать мою кнопку, нажмите revalidateField, тогда она принудительно проверит поле.вот синтаксис

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