Bonjour,

j'ai une page contenant 2 pages modales différentes, chacune fonctionnant parfaitement indépendamment.
Cependant, si j'ouvre celle contenant mon formulaire, il charge effectue bien le script :
$(".selectpicker").selectpicker();
donnant la bonne mesure à mes selects, mais si je ferme la page modale, que j'ouvre la seconde, la referme et réouvre la première, celle-ci n'execute plus le script et mes selects deviennent de simple select.

J'aimerai donc savoir si il y a un moyen pour executer un script à chaque fois qu'on fait apparaitre une fenêtre modale.
j'ai essayé avec loaded.bs.modal mais cela ne fonctionne qu'une fois car après que la fenêtre soit chargé, cela ne le fait plus.
et shown.bs.modal qui a donné le même resultat, la première fois ca marche mais pas la seconde.

Merci devotre aide

7 réponses


Salut,

Sans code, ça va être compliqué mais j'ai ma petite idée.
Ton JS est chargé au chargement de la page une fois. Donc ton selecteur $(".selectpicker") aussi.
Seulement, quand tu ferme la modale, ton objet n'existe plus, mais est re-créé par la suite.

La solution serait donc (pas essayé)

$(document).on('loaded.bs.modal', '#maModal', function(){
    $(document).find('.selectpicker').selectpicker();
});

Tiens nous au jus !

J'ai donc testé, cela ressemblait à ce que j'ai essayé de faire avec la fonction loaded.bs.modal, donc j'ai eu le même resultat, la première fois que la modale est affichée, aucun problème, si je la ferme et que j'ouvre une autre modale, une fois que je retourne sur la première, le script ne se fait plus (car je pense que la modale n'est chargée qu'une fois), il me faudrait donc un moyen pour que le script soit appelé a chaque fois que j'affiche la modale (ou trouver un moyen de faire recharger la modale à chaque fois)

Tes modals ont elles un ID différents ?

oui, je te montre si tu veux :

<div class="row">
                <div class="col-md-offset-5 col-md-3">
                        <button data-toggle="modal" id='reinitialisermdp' href="Vue/vue_reinitialisation_mot_de_passe.php" data-target="#infos" data-backdrop="false" class="btn btn-warning btn-block">
                            Réinitialiser le mot de passe
                        </button>
                </div>
            </div>
            <div class="row">
                <div class="col-md-offset-5 col-md-3">
                        <button data-toggle="modal" href="Controler/controler_inscription.php" data-target="#inscription" data-backdrop="false" class="btn btn-success btn-block">
                            S'inscrire sur C@STOR
                        </button>
                </div>
            </div>
            <div class="row">
                <div class="col-md-offset-4">
                    <div>
                        <div class="modal fade" id="infos">
                            <div class="modal-dialog">  
                                <div class="modal-content">

                                </div> 
                            </div> 
                        </div>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-md-offset-4">
                    <div>
                        <div class="modal fade" id="inscription">
                            <div class="modal-dialog ">  
                                <div class="modal-content">

                                </div> 
                            </div> 
                        </div>
                    </div>
                </div>
            </div>

Ha, tes données sont chargées en Ajax ?

quelles données?

mais oui dans les faits j'aimerai executer un script à chaque apparition, je charge les données de cette page en php pour une select et ajax pour l'autre