Partage
  • Partager sur Facebook
  • Partager sur Twitter

Rendre dynamique l'affichage d'un champ

Via une case à cocher rendre dynamique un formulaire

Sujet résolu
    4 août 2009 à 15:45:50

    Bonjour,

    Je souhaiterais lorsque je coche ma case de mon formulaire afficher un champ caché en dessous.
    J'ai déjà le code, mais celui-ci me génère une erreur Javascript "Objet attendu".
    Pourtant je n'ai pas l'impression d'avoir fauté quelque part.

    Je vous donne mon code, si quelqu'un peut m'aider à situer l'erreur je lui serais très reconnaissant :

    <fieldset> <legend> Renseignez votre adresse mail</legend>
    	<p style="color:red; font-size: 14px;"> Ne renseigner cette partie seulement si vous poss&eacute;dez une adresse mail</p>
    	<label for="adresse_mail" >Je coche si je possède une adresse mail</label>
    	<input type="checkbox" name="adresse_mail" value="adresse_mail" id="adresse_mail" onclick="afficher_mail();" />
    						
    		<br />
    		<br />
    						
    	<span id="champ_mail" class="champ_mail_cache"> <!-- Permet de créer un style CSS qui cache ou rend visible un formulaire sous   demande de l'utilisateur -->
    		<label>Votre adresse mail <span style="color:red;">(optionnel)</span> : </label>
    		<input type="text" name="mail" value="" size="40" tabindex="60" />
    	</span>
    				
    		<br />
    
    </fieldset>
    


    <SCRIPT type="text/javascript" language="javascript">
    	function afficher_mail()
    	{
    	     if(document.formulaire.getElementById("champ_mail").class == "champ_mail_cache")
    	     {
    	          document.formulaire.getElementById("champ_mail").class = "champ_mail_visible";
    	     }
    	     else
    	     {
    	          document.formulaire.getElementById("champ_mail").class = "champ_mail_cache";
    	     }
    	}
    </SCRIPT>
    


    J'ai placé le code JS tout en haut de mon fichier php.
    Voilà, je sais que c'est pas un truc complet et puissant, j'ai fait ce que j'ai pu, mais bon, ça ne fonctionne pas...

    Merci par avance de votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      4 août 2009 à 16:27:22

      Essaie ça :

      <SCRIPT type="text/javascript" language="javascript">
      	function afficher_mail()
      	{
      	     if(document.getElementById("champ_mail").className == "champ_mail_cache")
      	     {
      	          document.getElementById("champ_mail").className = "champ_mail_visible";
      	     }
      	     else
      	     {
      	          document.getElementById("champ_mail").className = "champ_mail_cache";
      	     }
      	}
      </SCRIPT>
      
      • Partager sur Facebook
      • Partager sur Twitter
        4 août 2009 à 16:34:41

        Citation : HerrRox

        Essaie ça :

        <SCRIPT type="text/javascript" language="javascript">
        	function afficher_mail()
        	{
        	     if(document.getElementById("champ_mail").className == "champ_mail_cache")
        	     {
        	          document.getElementById("champ_mail").className = "champ_mail_visible";
        	     }
        	     else
        	     {
        	          document.getElementById("champ_mail").className = "champ_mail_cache";
        	     }
        	}
        </SCRIPT>
        


        Bonjour,

        En remplaçant ainsi "class" par className" d'une le mot n'est plus en gras/italique bleu mais devient de police normal et noir, comme le reste. (il n'est plus interprété de la même façon dans notepad++).

        De plus le message d'erreur (Script) change, il devient : " Cet objet ne gère pas cette propriété ou cette méthode"

        Est-ce que le fait que mon champ et ma case soient placés dans un fieldset, lui-même placé dans un formulaire (avec un nom) change quelque chose ?

        Merci
        • Partager sur Facebook
        • Partager sur Twitter
          4 août 2009 à 16:39:22

          Quel navigateur utilises-tu et quelle version ?

          J'ai testé le code que je t'ai donné sous Firefox 2.0 et sous IE 7 et il marche parfaitement.

          A-tu d'autres éléments dans ta page ayant pour id "champ_mail" ?
          • Partager sur Facebook
          • Partager sur Twitter
            4 août 2009 à 16:49:12

            Citation : HerrRox

            Quel navigateur utilises-tu et quelle version ?

            J'ai testé le code que je t'ai donné sous Firefox 2.0 et sous IE 7 et il marche parfaitement.

            A-tu d'autres éléments dans ta page ayant pour id "champ_mail" ?



            Je suis sincèrement désolé, ça fonctionne, j'avais justement rajouté la notion de "document.formulaire.getElement..."
            En fait, j'avais oublié de remettre correctement.
            Donc ça fonctionne, mais entre nous, c'est faisable en PHP ?

            En créant une fonction en PHP, et ensuite en faisant un if(isset) ?
            c'est possible selon toi ? Car ça sera forcément plus sécurisé, et sur certain poste, à cause de l'activeX j'ai le message en haut de la page qui demande si on autorise...
            • Partager sur Facebook
            • Partager sur Twitter
              4 août 2009 à 16:55:08

              Pour l'affichage de l'élément t'es bien obligé de passer par le javascript puisque tu gères un évènement onclick (qui est du javascript) qui affichera ou non l'élément.

              Qu'est ce que tu veux faire exactement en PHP ? Tester si l'utilisateur à rentré une adresse valide ?
              • Partager sur Facebook
              • Partager sur Twitter
                4 août 2009 à 20:14:30

                Pour faire un affichage dynamique, il te faut forcément utiliser JS. Ce n'est pas possible en PHP sans recharger la page...
                • Partager sur Facebook
                • Partager sur Twitter
                  5 août 2009 à 12:14:40

                  Merci pour vos réponses.

                  En effet, j'ai essayé en PHP, ça ne peut pas fonctionner, j'avais pas vue assez loin.

                  Je veux m'assurer en direct live si la case est bien cochée, donc en JS et je vérifie à la fin, en PHP si elle est bien cochée, pour voir si je prend en compte le champ qui apparaît.

                  Merci beaucoup de votre aide, et vos renseignement, j'avais décroché le dev quelques mois, je me remets dedans là, y certaine chose flou.


                  Donc c'est bon, tout est ok pour moi.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Rendre dynamique l'affichage d'un champ

                  × 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