IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Scripts dans une fenêtre modale fonctionnent deux fois, puis plus du tout


Sujet :

jQuery

  1. #1
    Membre à l'essai Avatar de selios
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 16
    Points
    16
    Par défaut Scripts dans une fenêtre modale fonctionnent deux fois, puis plus du tout
    Bonjour,

    Je débute sur Symfony 2 et jQuery.
    Je veux faire un formulaire de création de dons, dans lequel je voudrais pouvoir sélectionner un donateur et une adresse, et le cas échéant en créer de nouveaux.

    Voilà ce que j'ai commencé à faire avec jQuery et jQuery UI:
    J'ai deux champs dans lesquels je vais indiquer l'ID du donateur et de l'adresse.

    Voilà le code du template :
    https://github.com/framasoft/gesdon2.../new.html.twig

    Avec jQuery, on peut ouvrir une fenêtre modale (pour le moment, c'est directement en cliquant sur le champ), dans laquelle on charge la page de recherche (qui existe déjà).
    C'est ce script là :
    https://github.com/framasoft/gesdon2.../web/js/new.js


    La liste des instances est chargée en ajax.
    Lorsqu'on clique sur une ligne, l'ID correspondant est affecté à une variable, la modale se ferme, et le champ du formulaire récupère la valeur de la variable.
    Pour le moment, le script est dans la page, pour me permettre d'utiliser facilement les routes de Symfony avec la fonction path() de Twig :
    https://github.com/framasoft/gesdon2...arch.html.twig
    https://github.com/framasoft/gesdon2...arch.html.twig


    J'ai plusieurs problèmes :
    pour commencer, les librairies sont rechargées à chaque fois qu'on ouvre la fenêtre modale. Ça paraît logique, dans la mesure où les librairies sont incluses dans la page de recherche, et dans le template de base. Mais ça ralentit sensiblement le chargement et l'exécution des scripts.

    D'autre part:
    Quand j'ouvre la fenêtre de sélection du donateur, j'en sélectionne un, ça fonctionne.
    Même chose pour l'adresse, ça fonctionne toujours.
    Mais si j'ouvre à nouveau la fenêtre du donateur, le script contenu dans la page de recherche ne s'exécute plus. L'action du bouton Rechercher n'est pas modifiée, et quand on clique dessus, il fait un submit, et c'est toute la page qui est rafraîchie.

    Il y a sûrement des erreurs d'organisation dans mes scripts, mais là je sèche un peu

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Citation Envoyé par selios Voir le message
    pour commencer, les librairies sont rechargées à chaque fois qu'on ouvre la fenêtre modale. Ça paraît logique, dans la mesure où les librairies sont incluses dans la page de recherche, et dans le template de base.
    Oui, et ton problème est sans doute là. Ces scripts ne sont censés s'exécuter qu'une seule fois, et du coup il y a des effets de bord indésirables, des gestionnaires d'évènements qui se télescopent et sans doute des erreurs JavaScript (cherche et ouvre la console de ton navigateur pour les voir).

    Par exemple il pourrait y avoir une erreur dans la fonction qui gère l'évènement submit et du coup l'évènement n'est pas annulé, ce qui expliquerait pourquoi la page se recharge quand tu cliques sur le bouton.

    Je pense qu'il suffirait d'une petite modification dans ton JavaScript pour corriger le problème. Actuellement, tu appelles .load('../Donateur') à chaque clic sur le champ (idem pour '../Adresse').C'est indiqué dans la doc de .load() que les scripts de la page récupérée sont exécutés.
    Il faudrait que tu gardes une référence, à l'extérieur de la fonction click, sur la <div> créée avec $( "<div title='...'></div>" );. Ensuite, dans la fonction, tu testes son existence. Si elle existe déjà, tu ne la recrées pas, tu te contentes de la refaire apparaître, par exemple avec .show().
    Ainsi je pense que tu pourras éviter les appels supplémentaires à .load() et le téléscopage des scripts.

  3. #3
    Membre à l'essai Avatar de selios
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    J'ai modifié les scripts pour que les fenêtres soient juste cachées, et ré-affichées quand elles ont déjà été initialisées,
    et ça fonctionne!

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MooTools] Un script dans une fenêtre modale ?
    Par Anons dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 25/07/2011, 12h22
  2. Ouvrir un éditeur dans une fenêtre modale
    Par i-thom dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 27/08/2008, 12h13
  3. Réponses: 3
    Dernier message: 15/11/2006, 13h57
  4. Formulaire dans une fenêtre modale
    Par Amnesiak dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/02/2005, 14h25
  5. Supprimer la croix dans une fenêtre modale
    Par AnneOlga dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/01/2004, 14h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo