Всплывающая подсказка Bootstrap "Uncaught TypeError: Невозможно прочитать свойство 'trigger' of null" - PullRequest
0 голосов
/ 16 февраля 2019

Когда я пытаюсь отобразить новую подсказку, после уничтожения старой я получаю «Uncaught TypeError: Невозможно прочитать свойство 'trigger' of null" в консоли Chrome.

Затем, когда я копалв коде начальной загрузки я нашел это: destroy function И я подозреваю, что это отвечает за исключение, которое я получаю: destroy function

Я пытался использовать атрибуты "селектор" и "контейнер", когдасоздание новой всплывающей подсказки.Единственное, что сработало, это добавление прослушивателя событий на другую кнопку, чтобы уничтожить всплывающую подсказку, поэтому при повторном нажатии кнопки «Зарегистрировать» она работает правильно, и никаких исключений не выдается.

Пример можно найти по адресу (щелкните по регистру)дважды): https://jsfiddle.net/08o4qgj5/1/ Код:

$("form#register").on("click", "button[name='btnRegister']", function () {
    //Destroy tooltip if exists
    $("input[name='email']").tooltip('destroy');
    //Adds new one
    $("input[name='email']").tooltip({title: "CYKA BLYAAAAAAT, IDI NAHUI!",
        placement: 'bottom',
        template:'<div class="tooltip" role="tooltip">' +
        '<div class="tooltip-arrow"></div>' +
        '<div class="tooltip-inner"></div>' +
        '</div>'});
    //Shows it
    $("input[name='email']").tooltip('show');
});

$("form#register").on("click", "button[name='btnDestroy']", function () {
    //Destroys tooltip
  $("input[name='email']").tooltip('destroy');
});

В примере, который я вам показал, это немного бесполезно, потому что есть только 1 вход.Но на моем веб-сайте я хочу получить следующее:

  1. Уничтожить любую подсказку, которая может существовать
  2. Проверить ввод пользователя
  3. В случае, если ввод недопустим,Я хочу добавить новую подсказку к этому элементу ввода

Самая похожая проблема, с которой я столкнулся, это: Bootstrap 3 Всплывающая подсказка , но это не помогломеня.

Заранее спасибо.

1 Ответ

0 голосов
/ 17 февраля 2019

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

Обертывание инициализации и отображение всплывающей подсказки внутри setTimeout (f (), t) с t [250, 400] хорошо работает здесь, проверьте this JSFiddle . Вы не должны использовать кнопку уничтожения

setTimeout(function() {
    $("input[name='email']").tooltip({title: "CYKA BLYAAAAAAT, IDI NAHUI!",
                                    placement: 'bottom',
                                    template:'<div class="tooltip" role="tooltip">' +
                                    '<div class="tooltip-arrow"></div>' +
                                    '<div class="tooltip-inner"></div>' +
                                    '</div>'});

    //Shows it
    $("input[name='email']").tooltip('show');
  }, 250);
});
...