J'utilise ajax pour soumettre un formulaire pour mon inscription, mais j'ai un problème en essayant de configurer des info-bulles pour afficher des messages d'erreur pour les erreurs qui reviennent du contrôleur.
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");
});
}
}
});
Message d'erreur: Uncaught Error: no such method 'show' for tooltip widget instance
J'ai eu la même erreur, qui était en conflit avec l'interface utilisateur jQuery.
Si vous utilisez l'interface utilisateur jQuery, vous devez réorganiser votre ordre de chargement de script.
Mon ordre de charge de travail:
Le root de ce problème et similaire
"aucune méthode de ce type" masquer "pour l'instance de widget info-bulle"
que JqueryUI et Boostrap ont la méthode info-bulle,
JqueryUI fonctionne comme:
$el.tooltip("option","show");
$el.tooltip("option","hide");
Boostrap fonctionne comme:
$el.tooltip("show");
$el.tooltip("hide");
Donc, comme Bogdan Lewis a montré que vous devez réorganiser vos scripts, par exemple avec requirejs, vous devez faire Boostrap être chargé après JqueryUI
var $ = require('jquery');
require('jquery_ui');
require('bootstrap');
et ajustez config pour requirejs comme:
bootstrap: {
deps: ['jquery', 'jquery_ui']
},
La solution la plus simple pour moi était simplement de supprimer les composants des info-bulles de la distribution jQuery UI I téléchargé .