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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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.

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