12
votes

Bootstrap Comment détecter quel bouton fermait une boîte de dialogue modale sur «Hidden_Modal_bs» Func?

J'ai un type de bienvenue bootstrap-modal sur la page d'accueil qui montre trois boutons, chacun d'entre eux devrait charger différentes pages

ici il s'agit d'un extrait pertinent du HTML P>

$(window).load(function(){
    $('#welcomeModal').modal('show');
});

$('#welcomeModal').on('hidden.bs.modal', function (e) {
    if (e.id == 'taketour') {
        $(window).location=e.href;
    }
    if (e.id == 'login') {
        $('#welomeModal').remote='element-login';
    }
});


3 commentaires

Avez-vous trouvé une solution?


PS J'ai besoin de détecter c'est des données - licenciement = "modal" ou autre chose.


J'ai géré cela en ayant les boutons qui soumettent des événements, par exemple: $ (". Modal .Modal-pied de page .btn"). Cliquez sur (Fonction (this) {$ ("Modal"). Déclencheur (". $ .Event ('buttonclick.bs.mo dal', this));});


4 Réponses :


-1
votes

Le E qui est passé est l'objet d'événement, vous pouvez utiliser E.Target pour obtenir le HTMLElement qui a été enfoncé pour déclencher cet événement.


1 commentaires

Ce n'est pas vrai, le event.target est le modal lui-même dans tous les cas.



14
votes

au lieu de hidden.bs.modal , consultez masquer.bs.modal , qui est tiré avant la fermeture de la boîte de dialogue.

et au lieu de regarder E, essayez d'envisager document.activeelement (comme document.activeelement.innertext ou document.activeelement.id ).


1 commentaires

Cela échoue sur iPhone 6 .. ActiveLement est null



5
votes

Normalement le cas que l'utilisateur ferme la boîte de dialogue modale à l'aide de la touche du clavier ESC est également dans le cas où l'utilisateur le fermait à l'aide d'une toile de fond (cliquez sur l'arrière-plan), donc la seule chose à laquelle j'ai été nécessaire de détecter est si le Utilisateur Fermer la boîte de dialogue modale à l'aide du bouton Fermer ou non? XXX

REMARQUE: Ce script à l'aide de masquer.bs.modal et non caché_modal_bs . L'événement caché incendie après la fermeture modale a déjà été fermé, dans ce cas, vous n'avez pas besoin de veiller à sa fermeture, normalement, vous devez détecter la manière dont il se ferme avant d'approuver de fermer la boîte de dialogue (à l'aide de Retour TRUE ou false dans le masquer.bs.modal événement).


1 commentaires

Méfiez-vous que Calling .hide () manuellement sera également considéré comme si vous appuyez sur Echap (comme document.activeLement est défini sur le corps).



3
votes

pour bootstrap 3.3.4 et antérieur, pour le masquer.bs.modal et Hidden.bs.modal événements, l'événement Event Passé aux gestionnaires contient aucune information à propos de la source originale de l'événement.

Il y a un problème pour cela sur la page du projet Bootstrap: # 15408: Obtenez une cause d'événement caché.bs.modal qui a été déployé dans un billet plus générique ( BOOTSTRAP numéro # 15393 ) pour le transfert de l'événement de déclenchement d'origine dans la file d'attente (pour le 4,0 Milestone).

en tant que Remarque latérale, j'ai utilisé la solution de contournement suivante (à l'aide d'une variable pour stocker le déclencheur d'événement d'origine): xxx

Dans votre cas, vous devrez ajouter les gestionnaires d'événements suivants : xxx

Veuillez noter que lorsque vos boutons ont le Data-Data-Data-Synsiss = "modal" attribut , le modal sera être caché w Vous avez cliqué sur les boutons. Cependant, les gestionnaires Cliquez sur entreront en ligne et définir Eventtrigger avant le modal est caché, c'est-à-dire avant la Hidden.bs.Modal Evénement, votre gestionnaire pour l'événement peut être un simple interrupteur : xxx


0 commentaires