capturer la valeur de l'élément sélectionné dans une liste déroulante de sélection créée à partir d'un fichier texte à l'aide de jquery

Aug 19 2020

J'ai un fichier texte qui contient quelques mots simples comme: faire, ça, travailler.

Je veux pouvoir charger le fichier texte et créer une liste déroulante de sélection dynamique à partir de celui-ci. Lorsque l'utilisateur clique sur Soumettre, il imprime la valeur de l'élément sélectionné.

Ci-dessous le code, j'utilise la barre de poignée pour rendre la page aux utilisateurs. Lorsque l'utilisateur clique sur le bouton de soumission, il passe à l'index / à l'affichage pour voir ce qu'il a sélectionné.

Au lieu d'imprimer la valeur réelle des options sélectionnées, il imprime l'index de l'option sélectionnée, pas la valeur.

<form method="post" action="index/display" id = "first" name="first">
<fieldset>
   <div style="display: inline-block; margin-left:10px ">
      <legend>Selecting items from text file</legend>
      <script type="text/javascript" src="js/jquery.js"></script>
      <script>
         $.get("js/pytxt.txt", function(data) { /*alert( "Data Loaded: " );*/ var options = data.split(','), $select = $('select#value'); for (var i = 0; i < options.length; i++) { $select.append('<option value="' + i + '">' + options[i] + '</option>"');
                   console.log ($select)};
         });
      </script>
      <p>
         <label></label>
         <select id = "value" name="first">
            <option selected value="base">Please Select</option>
         </select>
      </p>
   </div>
   <p>
      <input type="submit">
   </p>
</fieldset>

Voici la fonction de publication:

app.post('/index/display', (req, res) => {
   res.status(200).send('POST works!' + req.body.first);
});

Réponses

1 Liju Aug 19 2020 at 20:43

Veuillez remplacer:

$select.append('<option value="' + i + '">' + options[i] + '</option>"');

Avec cette ligne:

$select.append('<option value="' + options[i] + '">' + options[i] + '</option>"');

Cela devrait résoudre votre problème.

1 charlietfl Aug 19 2020 at 21:13

Vous pouvez simplifier un peu ceci en faisant:

options.forEach(v => $select.append( new Option(v, v)))

Démo:

let options = 'one,two,three,four'.split(','), $select = $('#value'); options.forEach(v => $select.append( new Option(v, v)))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="value"></select>