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 :

Activer ou afficher une balise SELECT si un INPUT type TEXT n'est pas vide


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    790
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 790
    Points : 183
    Points
    183
    Par défaut Activer ou afficher une balise SELECT si un INPUT type TEXT n'est pas vide
    Bonsoir,

    Je m'adresse à vous car après des recherches je n'ai pas trouvé la solution.

    Il s'agit de d'activer ou afficher une balise SELECT si un INPUT type TEXT n'est pas vide ?

    Voici mon code :
    Code html : 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
    <script>
            function verif_champ(champ)
            {
            if(document.getElementById('champ').value == '')
                    document.getElementById('select').disabled=true;
            else
                    document.getElementById('select').disabled=false;
            }
            </script><br>
    	<form name='form1' onsubmit='return verif_champ(document.form1.champ.value)'/>
    		<input type="text" name ="champ" Style ="margin-left:0px"/>
    		<select id="liste_5" name="select" disabled="disabled" Style ="margin-left:0px; margin-top:0px; height:20px"> 
    			<option value="" selected="selected"> </option> 
    			<option value="test1">test1</option> 
    			<option value="test2">test2</option> 
    		</select>
    	</form>
    Mais ça ne fonctionne pas.

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut

    Plutôt que disabled qui fait annuler les événements mais laisse visible le select, utilises visibility ==> hidden/visible ou bien display ==>none/block.
    De plus il faut capturer l'événement onchange sur l'input type="text" pour que ta fonction soit jouée.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name ="champ" onchange="verif_champ(this)" Style ="margin-left:0px"/>

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    790
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 790
    Points : 183
    Points
    183
    Par défaut
    Bonjour ProgElecT,

    Je précise avant tout que j'ai une faible notion de Javascript.

    Finalement j'ai suivi vos conseils, et je préfère rendre visible la balise SELECT sur clic de l'INPUT "Filtrer" si l'INPUT type TEXT n'est pas vide.

    Voici mon code rectifié :
    Code html : 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
    	<script>
            function verif_champ(champ)
            {
            if(document.getElementById('champ').value == '')
                    document.getElementById('select').style.visibility= 'hidden';
            else
                    document.getElementById('select').style.visibility = 'visible';
            }
            </script><br>
    	<form name='form1'/>
    		<input type="text" name ="champ" required Style ="margin-left:0px"/>
    		<input type="submit" name='filtrer' onchange="verif_champ(this)" Style ="margin-left:0px" value="Filtrer"/>
    		<select id="liste_5" name="select" Style ="margin-left:0px; margin-top:0px; height:20px"> 
    			<option value="" selected="selected"> </option> 
    			<option value="test1">test1</option> 
    			<option value="test2">test2</option> 
    		</select>
    	</form>
    Mais ça ne fonctionne pas ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    790
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 790
    Points : 183
    Points
    183
    Par défaut
    J'ai amélioré mon code, il me reste plus qu'à coder la condition que l'INPUT type TEXT NE SOIT PAS VIDE.
    Code html : 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
    	<script> 
            function activList(){ 
                    if(document.getElementById('liste_5').style.visibility= 'hidden')
                            document.getElementById('liste_5').style.visibility= 'visible';
                    else 
                            document.getElementById('liste_5').style.visibility= 'hidden';
            } 
            function activList2(){ 
                            document.getElementById('liste_5').style.visibility= 'hidden';
            } 
            </script> 
     
    	<input type="text" name ="champ" onClick="activList2()" Style ="margin-left:0px; margin-top:0px; margin-bottom:0px"/>
    	<input type="submit" name='filtrer' Style ="margin-left:0px; margin-top:0px" value="Filtrer" onClick="activList()"/>	
    	<select id="liste_5" name="date" class="hide" Style ="margin-left:0px; margin-top:5px; height:20px"> 	
    	<option value="" selected="selected"> </option> 
    	<option value="test1">test1</option> 
    	<option value="test2">test2</option> 
    	</select><br><br>

  5. #5
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Re

    Petites modification de ton code,
    Code html : 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
    	<script> 
                    function activList(elem){ 
                            let str = elem.value;
                            if(str.trim() === ''){
                                    document.getElementById('liste_5').style.visibility= 'hidden';
                            }else{
                                    document.getElementById('liste_5').style.visibility= 'visible';
                            }
                    }//------------------------------------------------------------------------------------------
                    function activList2(){ 
                            document.getElementById('liste_5').style.visibility= 'hidden';
                    }//------------------------------------------------------------------------------------------ 
            </script> 
     
    	<input type="text" name ="champ" oninput="activList(this)" Style ="margin-left:0px; margin-top:0px; margin-bottom:0px"/>
    	<input type="submit" name='filtrer' Style ="margin-left:0px; margin-top:0px" value="Filtrer" onclick="activList2()"/>	
    	<select id="liste_5" name="date" class="hide" Style ="margin-left:0px; margin-top:5px; height:20px"> 	
    	<option value="" selected="selected"> </option> 
    	<option value="test1">test1</option> 
    	<option value="test2">test2</option> 
    	</select><br><br>
    <input type="text" de onchange passe en oninput de façon à réagir à chaque appuis sur une touche du clavier.
    De plus, pour être sûr que l'entrée utilisateur n'est pas que des espaces, passe par la fonction native trim().
    Je ne comprend pas totalement l'utilité de la fonction activList2(), à voire plus tard je pense.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    790
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 790
    Points : 183
    Points
    183
    Par défaut
    Bonsoir ProgElecT,

    Je ne connaissais pas oninput que je découvre dans votre code qui fonctionne super bien et en effet fonction activList2() n'a aucune utilité dans votre solution.

    La fonction activList2() dans mon code permet sur clic de l'INPUT type TEXT de masquer la balise SELECT.

    Elle est inutile maintenant.

    Merci beaucoup pour votre aide.

    C'est en bûchant qu'on devient bûcheron.

Discussions similaires

  1. Champs input type="text" n'apparait pas sur une image
    Par sofuzion dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 04/06/2009, 09h16
  2. title sur une balise select
    Par delas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 16/06/2006, 11h37
  3. recupere valeur d'une balise select
    Par naourass dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/11/2005, 10h18
  4. ajout éléments dans une balise select
    Par wehtam dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/08/2005, 14h03
  5. Réponses: 4
    Dernier message: 18/11/2003, 16h08

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