Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Ajax] Script JS.

    25 octobre 2008 à 14:22:55

    Bonjour,

    De base j'ai un formulaire tout simple à afficher, lorsqu'on clique sur Ok, on lance un appel ajax. Le soucis c'est que là pour l'instant l'appel ne fait rien d'autre que de recharger le meme contenu, sauf qu'au chargement, le code javascript associé à mon bouton Ok n'est pas fonctionnel, pourquoi ?

    Le code :

    var spnValide = document.getElementById("spnValide"); //Le bouton ok.
    var txtLogin = document.getElementById("txtLogin");
    var txtPasswd = document.getElementById("txtPasswd");
    
    spnValide.onmouseover = overValide;
    spnValide.onclick = displayLeft;
    
    function overValide(){
    	this.style.cursor = "pointer";
    }
    
    function displayLeft(){
    	new Ajax.Updater("divAccCont", "ajax/accountLeft.php?login="+txtLogin.value+"&passwd="+txtPasswd.value, {
    		onSuccess: function(xmlHttp){},
    		evalScripts:true
    	});
    }
    


    AccountLeft.php :
    <?php
    	echo '<label for="txtLogin" id="lblLogin">id</label><input type="text" id="txtLogin" />';
    	echo '<label for="txtPasswd" id="lblPasswd">pass</label><input type="password" id="txtPasswd" />';
    	echo '<span id="spnValide">Ok</span>';
    ?>
    


    Tout ça est dans mon div identifié par l'id "divAccCont" bien entendu, et est exactement à la même place dans la page d'origine ( donc avant le click sur ok ).

    <div id="divAcc">
    	<div id="divAccCont">
    		<label for="txtLogin" id="lblLogin">id</label><input type="text" id="txtLogin" />
    		<label for="txtPasswd" id="lblPasswd">pass</label><input type="password" id="txtPasswd" />
    		<span id="spnValide">Ok</span>
    	</div>
    </div>
    


    A prioris, vu que j'ai les memes id etc, en fait je remplace le code exactement par le meme, je devrais avoir acces aux memes fonctions javascript non ?
    • Partager sur Facebook
    • Partager sur Twitter
      25 octobre 2008 à 14:52:43

      spnValide.onmouseover = overValide();
      spnValide.onclick = displayLeft();
      

      ??
      • Partager sur Facebook
      • Partager sur Twitter
        25 octobre 2008 à 14:57:18

        Du tout non, si tu met ça, ta fonction est évaluée d'entrer de jeu sans avoir cliqué ou passer la souris dessus, ça fonctionne très bien au premier coup, sauf que le contenu remplacé par Ajax.Updater n'est plus interpreté.
        • Partager sur Facebook
        • Partager sur Twitter
          25 octobre 2008 à 16:24:35

          Citation : Pas de titre

          spnValide.onmouseover = overValide;
          spnValide.onclick = displayLeft;


          On ne rajoute pas un évenement comme ça dynamiquement. Il vaut mieux utiliser le AddEventListener ;) .
          • Partager sur Facebook
          • Partager sur Twitter
            25 octobre 2008 à 19:13:35

            A la base ils sont pas dynamiques justement.
            • Partager sur Facebook
            • Partager sur Twitter
              25 octobre 2008 à 20:16:29

              Citation : askerat

              A la base ils sont pas dynamiques justement.



              Alors je t'explique deux-trois trucs, là on essaie de t'aider, tu m'as dégagé, ok j'ai pas réagit.
              Mais là une seconde personne t'aide et tu la dégage aussi, de plus il a raison, tu ajoutes tes évènements dynamiquement.

              Maintenant tu vois le principe d'un site communautaire c'est qu'on est gentil, poli. Surtout quand on se fait aider.
              (Timot et moi même sommes sûrement largement capable de faire le script sur lequel tu bug actuellement)

              Je laisse les modos décider du sort de ton topic.

              Cordialement, Attonde, qui se retient.
              • Partager sur Facebook
              • Partager sur Twitter
                25 octobre 2008 à 20:30:49

                Attonde > J'ai bien du mal à comprendre où tu as vu qu'il vous dégageait; ila répondu son point de vue sans y mettre de rondeurs, mais je ne vois pa en quoi il t'a dégagé... Et de quoi tu te retiens, tu vas faire quoi?

                A + :)
                • Partager sur Facebook
                • Partager sur Twitter
                  25 octobre 2008 à 20:34:19

                  Citation : sebi

                  Attonde >Et de quoi tu te retiens, tu vas faire quoi?


                  Là tu es légèrement arrogant. T'es modérateur, c'est tout, donc ton arrogance à 2 balles, tu te la gardes ;)
                  (Et surtout, vu que tu es en crise de pouvoir, hésite pas à me bannir, ou me mettre des pourcents ...)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 octobre 2008 à 20:53:51

                    Pour vrai, je dégage personne, j'explique comment je comprends mon problème. Puisque je fournis un script javascript pour mon dom initial, je vois mal le dynamisme, mon script éxiste dès le début.

                    Il se trouve que Ajax.Updater me retourne un div qui contient exactement les memes balises avec les mêmes id, j'aimerais juste savoir pourquoi des fonctions évenementielles qui fonctionnaient bien avant ne fonctionnent pas, j'aimerais éviter de me trimballer des fonctions javascript écrites dans un script php. Car ( j'ai trouvé une solution à moitié convenable ), si je fournis une balise <script></script> contenant le code ça fonctionne, par contre si je joue de l'attribut src="path/fichier.ext" ça ne fonctionne à nouveau plus. ( La solution que j'ai consiste à définir les méthodes comme attributs de l'objet window, je sais pas ce que ça vaut j'ai trouvé ça dans un bouquin qui prenait la poussière )
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 octobre 2008 à 23:18:18

                      Citation : askerat

                      A la base ils sont pas dynamiques justement.


                      Beh si, ils sont dynamiques, puisqu'ils sont implémentés dans le javascript.
                      Le javascript est un langage dynamique, donc ils sont dynamiques.
                      CQFD.
                      Donc, pour rajouter un événement dynamiquement, en javascript si tu préfères, il faut mieux utiliser AddEventListener; et si tu parcoures les tutos de ce site, tu trouveras ta réponse ;) .

                      Et puis, pour répondre à ta question, forcement que ca marche pas, vu que tu rajoute (mal) un évenement a un objet DOM que tu vas supprimer, donc forcement, l'évènement est supprimé aussi ;) .
                      • Partager sur Facebook
                      • Partager sur Twitter

                      [Ajax] Script JS.

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown