Augmenter nombre inputs dans form HTML en fonction de l'utilisat

Résolu
Bonjour,

Toujours dans le cadre de mon examen de diplôme, j'aimerais faire la chose suivante:

Pour être bref, mon site permet de gérer des sondages. Une sorte de doodle où il faut voter.

Lorsqu'un utilisateur crée un sondage, il arrive sur un formulaire où il renseigne titre, description du sondage ainsi que les options pour lesquelles voter. J'aimerais afficher de base 2 input pour les choix 1 et 2, mais j'aimerais savoir s'il y a possibilité d'augmenter le nombre d'input manuellement depuis le formulaire, un peu comme quand on insère des lignes dans phpMyAdmin.

Est-ce que qqn pourrait me renseigner svp?
Merci!

1 réponse

  1. Modérateur
    Bonjour,

    Oui c'est possible ... Il suffit de les créer en Javascript.

    0
    1. Yep!

      Merci c'est bon j'ai trouvé sur ce lien (pas sûr que le lien soit légal mais bon):
      https://openclassrooms.com/forum/sujet/ajouter-champ-formulaire-automatiquement-52099

      Et autre question maintenant, comment je peux faire pour conserver les inputs déjà écrits lorsque j'en ajoute d'autres?
      0
    2. @jordane45Yep, je n'ai pas l'icône pour insérer une image mais bref.

      Voici mon code

      <label>Option</label>
      <input class="form-control" type="text" name='option[]' placeholder="Option/candidat" maxlength="4"/><br/>
                    
      <div id="option">
       <!-- 2 OPTIONS PAR DEFAUT -->
      <input class="form-control" type="text" name='option[]' placeholder="Option/candidat" maxlength="4"/><br/>
       </div>
      
                    <!-- AJOUT D OPTIONS AVEC CLIC SUR + -->
                   <code js>
                    <script type="text/javascript" >
                        var div = document.getElementById('option');
                        function addInput(nam){
                            var input = document.createElement("input");
                            input.name = option;
                            div.appendChild(input);
                        }
                        function addField() {
                            addInput("option[]");
      
                            div.appendChild(document.createElement("br"));
                        }
                    </script>
                    

      </code>

      Ce que je veux faire c'est: Lorsque je clique sur le bouton "+", un nouveau input apparaît avec un
      <br/>
      . Le contenu des inputs déjà remplis doit rester et ceux que je crée via le bouton "+" doivent garder les mêmes propriétés que les inputs de base.

      Est-ce que je me suis mieux exprimé?
      0
    3. Modérateur
      @M_Tufux
       input.name = "option[]";
      //pour la class
      input.className = " form-control";
      
      //maxlength
      input.setAttribute('maxLength',4);
      
      //etc...
      
      0
    4. Yes c'est bon j'ai. Merci!

      Voici ma solution pour le coup (j'ai la flemme d'indenter):

      <label>Option</label>
                    <input class="form-control" type="text" name='option[]' placeholder="Option/candidat" maxlength="4"/><br/>
                    <div id="option">
                      <!-- 2 OPTIONS PAR DEFAUT -->
                      <input class="form-control" type="text" name='option[]' placeholder="Option/candidat" maxlength="4"/><br/>
                    </div>
      
                    <!-- AJOUT D OPTIONS AVEC CLIC SUR + -->
                    <script type="text/javascript" >
                      var div = document.getElementById('option');
                      function addInput(nam){
                          var input = document.createElement("input");
                           input.name = "option[]";
                           input.className = "form-control";
                           input.placeholder = "Option/candidat";
                          div.appendChild(input);
                      }
                      function addField() {
                          addInput("option[]");
                          div.appendChild(document.createElement("br"));
                      }
                    </script>
      
      0