#html #jquery #handlebars.js
#HTML #jquery #handlebars.js
Вопрос:
У меня есть текстовый файл, который содержит несколько простых слов, таких как: make, this, work.
Я хочу иметь возможность загружать текстовый файл и создавать из него динамический выпадающий список выбора. Когда пользователь нажимает отправить, он выводит значение выбранного элемента.
Ниже приведен код, я использую панель управления для отображения страницы пользователям. Когда пользователь нажимает на кнопку отправки, он переходит к индексации / отображению, чтобы увидеть, что они выбрали.
Вместо того, чтобы выводить фактическое значение выбранных параметров, выводится индекс выбранного параметра, а не значение.
<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>
Это функция post:
app.post('/index/display', (req, res) => {
res.status(200).send('POST works!' req.body.first);
});
Ответ №1:
Пожалуйста, замените:
$select.append('<option value="' i '">' options[i] '</option>"');
С помощью этой строки:
$select.append('<option value="' options[i] '">' options[i] '</option>"');
Это должно решить вашу проблему.
Комментарии:
1. @jiachang Потому что вы используете i (который является индексом) в качестве значения вместо того, чтобы получать значение по индексу i из параметров.
Ответ №2:
Вы можете немного упростить это, выполнив:
options.forEach(v => $select.append( new Option(v, v)))
ДЕМОНСТРАЦИЯ:
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>