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

JavaScript Discussion :

afficher/cacher un input text


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Points : 98
    Points
    98
    Par défaut afficher/cacher un input text
    Bonjour tout le monde,

    J'ai une liste permettant de choisir plusieurs mots clés parmis une liste déroulante. A la fin de cette liste, j'ai une option autre. J'aimerais que lorsque je clic sur cette option, une zone de texte apparaisse et que l'utilisateur puisse entrer ce qu'il veut.

    Inversement, j'aimerais qu'elle soit cachée lorsque l'option n'est pas cochée.

    Voila un bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <select name="motsCles" id="motsCles" multiple="multiple" style="height:<?php echo 20*$nb_motsCles; ?>px;" onChange="verifAutre()">
                  <?php
                            for($i=1;$i<=$nb_motsCles;$i++){
    ?>
                  <option value="<?php echo $i; ?>"><?php echo $GLOBALS["tableau_motsClesEntreprise"][$i]; ?></option>
                  <?php
                            }
    ?>
                  <option value="0">Autre</option>
                </select>
                  <input type="text" name="autreMotCle" id="autreMotCle" style="visibility:hidden">
    Si quelqu'un a une solution ou une piste, je l'en remercie d'avance.

  2. #2
    Membre actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    Par défaut
    Tu peux donner par exemple une valeur particulier (pour faciliter les test) à l'option qui va afficher la zone
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <Select onchange="test(this)"> 
      <!-- les autre selects-->
      <option value="lavaleur">xxxx</option>
    </select>
    <input type="text" name="mazone" id="mazone" style="display: none;">
    le js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function test(objSelectSrc) {
     // ex test sur la valeur
     if(objSelectSrc.options[objSelectSrc.selectedIndex].value =="lavaleur") {
       document.getElementById("mazone").display = "block";
     } else  {
       document.getElementById("mazone").display = "none";
     }
    }
    Le même code, mais si tu veux comment a ton idée 1ere tester lorsque l'element selectionné est le dernier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function test(objSelectSrc) {
     // ex test si dernier element selectionné
     if(objSelectSrc.selectedIndex == (objSelectSrc.options.length-1) ) {
       document.getElementById("mazone").display = "block";
     } else  {
       document.getElementById("mazone").display = "none";
     }
    }

  3. #3
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Points : 98
    Points
    98
    Par défaut
    Merci !
    J'ai réussi avec une solution similaire.
    Par contre, un nouveau pb se pose. Voila mon nouveau code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	function verifAutre(){
    		var nb_mc = document.getElementById('motsCles').length;
    		for($i=0; $i<nb_mc; $i++) {
    			if (document.getElementById('motsCles')) {
     
    			}
    		}
    		if(document.getElementById('motsCles').value=='value0'){
    			document.getElementById('autreMotCle').style.visibility="visible";
    		} else {
    			if (document.getElementById('autreMotCle').value == "") {
    				document.getElementById('autreMotCle').style.visibility="hidden";
    			} else {
    				document.getElementById('autreMotCle').style.visibility="visible";
    			}
    		}
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <select name="motsCles" id="motsCles" multiple="multiple" style="height:<?php echo 20*$nb_motsCles; ?>px;" onChange="verifAutre()">
                  <?php
                            for($i=1;$i<=$nb_motsCles;$i++){
    ?>
                  <option value="value<?php echo $i; ?>"><?php echo $GLOBALS["tableau_motsClesEntreprise"][$i]; ?></option>
                  <?php
                            }
    ?>
                  <option value="value0">Autre</option>
                </select>
    			<input type="text" name="autreMotCle" id="autreMotCle" style="visibility:hidden">
    Maintenant, lorsque je clic sur l'option autre, la zone de texte s'affiche, et disparait si l'option est décochée et que rien n'a été entrée dedans.

    Maintenant, le pb est que lorsque la zone de saisie est vide, et que l'option autre est sélectionner en mm temps qu'une autre option, le champ disparait. Hors il devrait rester.

    Merci d'avance de vos suggestions.

    A+

  4. #4
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Points : 98
    Points
    98
    Par défaut
    C'est bon j'ai trouvé !
    voila le code de ma fonction si ca peut intéresser quelqu'un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    	function verifAutre(){
    		var selectBox = document.formulaire.motsCles;
    		var autreSelectionne = false;
    		for (var i=0; i<selectBox.options.length; i++) {
    			if (selectBox.options[i].selected) {
    				if(selectBox.options[i].value=="value0"){
    					autreSelectionne = true;
    				}
    			}
    		}
    		//alert(autreSelectionne);
     
    		if(autreSelectionne==true){
    			document.getElementById('autreMotCle').style.visibility="visible";
    		} else {
    			if (document.getElementById('autreMotCle').value == "") {
    				document.getElementById('autreMotCle').style.visibility="hidden";
    			} else {
    				document.getElementById('autreMotCle').style.visibility="visible";
    			}
    		}
    	}
    A+

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

Discussions similaires

  1. Afficher/cacher zone de texte selon choix
    Par defender19 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/05/2012, 16h08
  2. Afficher/cacher des champs texte, et exécuter le bon bean
    Par maserati dans le forum Frameworks Web
    Réponses: 0
    Dernier message: 02/01/2012, 11h37
  3. Afficher/cacher un Input au changement d'un Select
    Par Strix dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 19/06/2007, 10h50
  4. [SQL] Le résultat de la requête est tronqué lorsqu'on l'affiche dans un input text
    Par JackBeauregard dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/01/2007, 18h51
  5. Afficher/Cacher un champs texte
    Par eown dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/04/2006, 10h22

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