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 :

Ajouter des champs text en fonction d'un select


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2018
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 145
    Points : 74
    Points
    74
    Par défaut Ajouter des champs text en fonction d'un select
    Hello,

    Je suis une quiche en Javascript...

    Mon script ressemble à ceci, mais dans ma console j'obtiens un message "Uncaught TypeError: Cannot read property 'undefined' of undefined"
    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
    <script>
    var select = document.getElementsByName("lieux");
    var options = document.getElementsByTagName("option");
    var optionValue = select.options[select.selectedIndex].value;
     
    select.addEventListener('change', function()
    {
       optionValue = select.options[select.selectedIndex].value;
       if (optionValue == 'Hors les murs')
       {
            // Afficher <input type="text" name="autreLieu"> (je n'ai pas encore regardé plus en détails comment afficher le champ, mais je suppose que c'est avec un .show)
       }
       elseif (optionValue != 'Hors les murs')
       {
            // cacher <input type="text" name="autreLieu"> (et ici un .hide)
       }
    })
    </script>
    Mon HTML ressemble à ça
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <select name="lieux">
            <?php
            $reqLieux = $bdd->prepare('SELECT * FROM lieux');
            $reqLieux->execute();
     
            while ($donnees = $reqLieux->fetch()) {
              echo '<option value="'.$donnees['libelle_lieux'].'">' . $donnees['libelle_lieux'] . '</option>';
            }
            ?>
          </select>

    C'est une partie php, mais dans ce cas on s'en fout un peu, c'est comme si c'était :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <option value="lieu1">lieu1</option>
    <option value="lieu2">lieu2</option>
    <option value="lieu3">lieu3</option>
    <option value="Autre">Autre</option>

    Mon but est qu'en choisissant "Autre", un champ de type text s'affiche pour me permettre de préciser un lieu dedans...

    Merci pour votre aide !

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2018
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 145
    Points : 74
    Points
    74
    Par défaut
    J'ai résolu en changeant complètement de méthode...

    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
    22
    23
    24
          <select onchange="champAutre(this);">
            <?php
            $reqLieux = $bdd->prepare('SELECT * FROM lieux');
            $reqLieux->execute();
     
            while ($donnees = $reqLieux->fetch()) {
              echo '<option value="'.$donnees['libelle_lieux'].'">' . $donnees['libelle_lieux'] . '</option>';
            }
            ?>
     
          </select>
          <div id="siAutre" style="display: none;">
            <label for="precisionLieu">Préciser : </label> <input type="text" name="precisionLieu"/><br />
          </div>
     
    <script type="text/javascript">
    function champAutre(that) {
        if (that.value == "Hors les murs") {
            document.getElementById("siAutre").style.display = "block";
        } else {
            document.getElementById("siAutre").style.display = "none";
        }
    }
    </script>

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

Discussions similaires

  1. ajouter des événements à des champs text
    Par babi307 dans le forum Général Python
    Réponses: 0
    Dernier message: 23/06/2013, 16h51
  2. Réponses: 0
    Dernier message: 14/08/2012, 11h04
  3. JTable ajouter des champs Text a la Table
    Par netsoft dans le forum Composants
    Réponses: 2
    Dernier message: 14/09/2010, 21h29
  4. Boucler sur des champs texte
    Par syl2095 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/11/2004, 16h15
  5. [CR] mise en forme d'un champs texte en fonction des données
    Par niPrM dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 29/06/2004, 11h57

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