Есть ли SelectedIndex для HTMLL DataList?
Вы можете выбрать текущий 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>
Ответы
Ответ 1
Нет, элемент datalist предназначен для предоставления автозаполнения входам. Он является источником данных, скрыт от пользователя, и к нему могут подключаться несколько входов. Поэтому нет смысла иметь 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);
Ответ 2
Судя по спецификациям, datalist
объект не имеет свойства selectedIndex
. Но вы можете найти его вариант по умолчанию, который имеет selected
. Или сравните входное значение с каждым значением параметра и вручную найдите индекс.
Ответ 3
Вы можете просто добавить значение к элементу ввода. Это будет показано пользователю как значение по умолчанию. Если пользователь решает изменить его, то есть удалить это значение из поля ввода, тогда список в каталоге данных появится:
<input list="browsers" name="browser" value="Internet Explorer">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
Ответ 4
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;}