Подтвердить что ты не робот

Uncaught Error: нет такого метода 'show' для экземпляра виджета tooltip

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

JavaScript:

$(document).on('ajax:success', '.user_modal_form', function(e, data, status, xhr) {
  var context;
  context = $(this);
  if (data.success) {
    $('button', context).hide();
    $('.spinner', context).show();
    location.reload();
  } else {
    if (data.errors != null) {
      $.each(data.errors, function(key, error) {
        var field;
        field = $("#athlete_" + key);
        field.attr('data-original-title', "" + key + " " + error).tooltip({
          trigger: 'manual'
        }).tooltip("show");
      });
    }
  }
});

Сообщение об ошибке: Uncaught Error: no such method 'show' for tooltip widget instance

4b9b3361

Ответ 1

У меня была та же ошибка, которая была конфликтом с jQuery UI.

Если вы используете jQuery UI, вам нужно изменить порядок загрузки скриптов.

Мой порядок рабочей нагрузки:

  • JQuery
  • JQuery UI
  • начальная загрузка

Ответ 2

root этой и аналогичной проблемы

"нет такого метода 'hide' для экземпляра виджета всплывающей подсказки

что и JqueryUI, и Boostrap имеют подсказку,

JqueryUI работает как:

$el.tooltip("option","show");
$el.tooltip("option","hide");

Boostrap работает как:

$el.tooltip("show");
$el.tooltip("hide");

Итак, поскольку Богдан Льюис показал, что вам нужно изменить порядок своих сценариев, например, с помощью requirejs, вам нужно загрузить Boostrap после JqueryUI

var $ = require('jquery');
require('jquery_ui');
require('bootstrap');

и настройте config для requirejs, например:

    bootstrap: {
        deps: ['jquery', 'jquery_ui']
    },

Ответ 3

Самое простое решение для меня было просто удалить компоненты всплывающих подсказок из дистрибутива UI jQuery я скачано.