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 :

Input visible ou pas selon le choix d'un select


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 394
    Par défaut Input visible ou pas selon le choix d'un select
    Bonjour,

    J'ai une liste déroulante avec plusieurs choix. un des choix est : "autre"

    J'aimerais faire apparaitre un input juste en dessous si le choix se porte sur "autre".

    J'ai cherché sur le web, mais je n'ai rien trouvé de concluant...

    Pourriez-vous m'aider ?

    Merci d'avance :-)

  2. #2
    Membre éprouvé
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 127
    Par défaut
    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
    23
    24
    25
    26
    27
    28
     
    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    	<meta charset="utf-8" />
     
    </head>
    <body>
        <select id="ddl">
            <option value="test">TEST</option>
            <option value="other">AUTRE</option>
        </select>
        <input type="text" name="name" id="inputToDisplay" style="display:none" />
        <script>
            var select = document.getElementById( "ddl" )
            select.addEventListener( "change", function ( e )
            {
                var input = document.getElementById( "inputToDisplay" )
     
                if ( e.target.value == "other" )
                    input.style.display = "inline-block"
                else
                    input.style.display = "none"
            } )
        </script>
    </body>
    </html>

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 394
    Par défaut
    Merci, cela fonctionne nickel... mais j'aimerais plutôt comme cela, et là ça ne fonctionne pas...
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    	<meta charset="utf-8" />
     
    <script language="Javascript">
    function activer() 
    {
              var select = document.getElementById( "ddl" )
            select.addEventListener( "change", function ( e )
            {
                var input = document.getElementById( "inputToDisplay" )
     
                if ( e.target.value == "other" )
                    input.style.display = "inline-block"
                else
                    input.style.display = "none"
            } )
        </script>
     
    </head>
    <body>
        <select id="ddl" onchange="activer();">
            <option value="test">TEST</option>
            <option value="other">AUTRE</option>
        </select>
        <input type="text" name="name" id="inputToDisplay" style="display:none" />
     
    </body>
    </html>
    J'aimerais en plus de faire apparaitre l'input "inputToDisplay", faire aussi apparaitre un petit texte juste avant :

    - Si autre : [Input]

    Ps : Est-il possible d'utiliser ces commandes au lieu des vôtres ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.pgenerate.autres.hidden=true;
    document.pgenerate.autres.disabled=true;

  4. #4
    Membre éprouvé
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 127
    Par défaut
    Pour déclencher l'action à partir du onchange, tu dois modifier ce qui se passe dans ta fonction Activer :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <meta charset="utf-8" />
     
        <script>
            function activer()
            {
                var select = document.getElementById( "ddl" )
     
                var otherFields = document.querySelectorAll( ".toDisplay" )
     
                if ( select.value == "other" )
                    Array.from( otherFields ).forEach( function ( input ) { input.style.display = "inline-block" } )
                else
                    Array.from( otherFields ).forEach( function ( input ) { input.style.display = "none" } )
            }
        </script>
     
    </head>
    <body>
        <select id="ddl" onchange="activer();">
            <option value="test">TEST</option>
            <option value="other">AUTRE</option>
        </select>
        <span class="toDisplay" style="display:none">Si autre : </span>
        <input type="text" name="name" class="toDisplay" style="display:none" />
     
    </body>
    </html>
    J'ai également ajouté le champ texte avant l'input mais je pense que tu aurais pu le faire seul !

    Pour la dernère question, je ne sais pas d'où te vient la propriété pgenerate sur document ?...

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 394
    Par défaut
    Super, merci :-)

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    Attention toutefois Array.from( otherFields ).forEach( n'est pris en compte par IE que dans sa déclinaison EDGE, il faudra surement avoir recours à un polyfill.

  7. #7
    Membre éprouvé
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 127
    Par défaut
    Oui en effet, ou avec jQuery...

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 394
    Par défaut
    Suite aux différents messages, serait-il possible de faire fonctionner ceci avec un select ?

    Exemple : si le choix du select est "autres" alors l'input apparait ainsi que le texte "Si autres :". Je n'y arrive pas... :-(

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     
     
    <script language="Javascript">
    function activer()
    {
    document.pgenerate.autres.disabled=false;
    document.pgenerate.autres.hidden=false;
    document.pgenerate.autres2.visibility="hidden";
    }
    </script>
     
    <script language="Javascript">
    function desactiver()
    {
    document.pgenerate.autres.disabled=true;
    document.pgenerate.autres.hidden=true;
    document.pgenerate.autres.value="";
    document.pgenerate.autres2.visibility="visible";
    }
    </script>
     
     
    <script language="Javascript">
    function activer2()
    {
    if (document.pgenerate.checkbox2.checked == "other" )
    {
    document.pgenerate.autres.disabled=false;
    document.pgenerate.autres.hidden=false;
    document.pgenerate.autres2.visibility="hidden";
    }
    else
    {
    document.pgenerate.autres.disabled=true;
    document.pgenerate.autres.hidden=true;
    document.pgenerate.autres.value="";
    document.pgenerate.autres2.visibility="visible";
    }}
    </script>
     
     
    </head>
     
    <body>
    <div id="contener">
    <table width="480" height="200" border="0" align="left" cellpadding="0" cellspacing="0" bordercolor="#0000CC" bgcolor="#eaeff5">
      <tr> 
        <td width="480" height="200" align="left" valign="top"> 
          <form action="php/fichier.php" method="post" name="pgenerate">
    	    <div align="left"><a name="debutformulaire" id="debutformulaire"></a></div>
            <table width="563" height="105" border="0" cellpadding="0" cellspacing="0">
              <tr>
                <td width="48" height="30">&nbsp;</td>
                <td width="515" height="30"><p>
      <input id="oui" type="radio" name="inscription" value="oui" onclick="activer()"/>
      Oui<br>
      <input name="inscription" type="radio" id ="non" onfocus="desactiver()" value="non" checked="checked" />
      Non</p></td>
              </tr>
              <tr>
                <td height="30">&nbsp;</td>
                <td height="30">
                <select name="checkbox2" id="checkbox2" onclick="activer2()">
                  <option value="1">un</option>
                  <option value="2">deux</option>
                  <option value="other">autres</option>
                </select></td>
              </tr>
              <tr>
                <td height="30">&nbsp;</td>
                <td height="30"><p><span name="autres2" id="autres2" style="visibility: hidden">Si autres : </span>
    				<input name="autres" type="text" id="autres" size="40" disabled=true hidden=true/>
                </p></td>
              </tr>
              <tr>
                <td height="15" colspan="2">&nbsp;</td>
              </tr>
            </table>
            <p align="right"> 
              <input type="button" value="Envoyer" onclick="verif(this.form);"/>
              <input type="reset" value="Effacer" />
            </p>
          </form>    </td>
      </tr>
    </table>                  
    </body>
    </html>
    Grand merci :-)

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    document.pgenerate.autres2.visibility="hidden";
    tu le sort d'où cet élément autres2, pas de trace dans ton code.

    Remarques :

    <script language="Javascript"> est obsolète, mettre <script type="text/javascript"> ou en HTML5 <script> tout court.

    • Même si ton écriture n'est pas incorrecte, pour la récupération des éléments autant utiliser document.getElementById, document.querySelector ou document.querySelectorAll.

Discussions similaires

  1. Utiliser un objet "wsExcel" ( worksheet) selon le choix d'un "Select Case"
    Par sossso112333 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/07/2015, 15h57
  2. Remplir un tableau selon le choix d'un select
    Par a-sana dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/02/2014, 10h31
  3. [XL-2007] Mon commentaire bouge selon qu'il est visible ou pas !
    Par Baldurr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2012, 17h17
  4. Réponses: 2
    Dernier message: 26/02/2008, 23h32
  5. Réponses: 2
    Dernier message: 14/09/2005, 12h08

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