используя цикл выше

жете выбрать текущийoption любойselect элемент:

mySelect.options[mySelect.selectedIndex]

Могу ли я сделать то же самое с DataList? Что-то вроде этого:

<input id = "input" list = "datalist" type = "text" />

<datalist id = "datalist">
    <option value = "No. 1"></option>
    <option value = "No. 2"></option>
    <option value = "No. 3"></option>
</datalist>

<script>
    var datalist = document.getElementById ("datalist");
    var input = document.getElementById ("input");

    input.addEventListener ("keyup", function (event) {
        if (event.which === 13) {
            alert (datalist.options[datalist.selectedIndex]); // Example
        }
    }, false);
</script>

Ответы на вопрос(3)

for (var i=0;i<datalist_id.options.length;i++)
    if (datalist_id.options[i].value == input_id.value) 
        {alert(datalist_id.options[i].innerText);break;}
 pingle6023 июн. 2018 г., 19:19
этот код работает
Решение Вопроса

элемент списка данных предназначен для автозаполнения входных данных. Это источник данных, скрытый от пользователя, и несколько входов могут ссылаться на него. Поэтому не имеет смысла иметьselectedIndex.

Вместо этого вы должны просто проверить.value вход:

var datalist = document.getElementById ("datalist");
var input = document.getElementById ("input");

input.addEventListener ("keyup", function (event) {
    if (event.which === 13) {
        alert(input.value);
    }
}, false);
 Some Guy30 окт. 2012 г., 13:24
Вероятно, следует изменить слушатель события наinput так как это решит проблему, которую поставил и Дмитрий.
 Dmitrii Sorin15 авг. 2012 г., 08:27
Осторожно: когда пользователь нажимает на выпадающий элемент из списка данных (щелчок мышью), событие не запускается (chrome21)

функции, datalist объект не имеетselectedIndex свойство. Но вы можете найти его по умолчанию, который имеетselected, Или сравните значение ввода с каждым значением параметра и вручную найдите индекс.

Ваш ответ на вопрос