В нижеприведенном фрагменте у меня есть два метода для выбора элемента: ввод с datalist и традиционный выбор с параметрами.
Элемент select сохраняет значения параметров скрытыми, и мы все еще можем получить его с помощью this.value
. Однако с помощью datalist значение действительно отображается, а текстовое содержимое опции отображается как вторичная метка.
Я хотел бы, чтобы подход ввода + datalist вел себя как традиционный выбор, где "Foo" и "Bar" отображаются как опции, которые при выборе имеют значения "1" и "2" соответственно.
Я также добавил повторное имя "Foo" со значением "3". Это должно показать, что любое решение не должно зависеть от уникальных опций.
<input list="options" onchange="console.log(this.value)"/>
<datalist id="options">
<option value="1">Foo</option>
<option value="2">Bar</option>
<option value="3">Foo</option>
</datalist>
<select onchange="console.log(this.value)">
<option value=""></option>
<option value="1">Foo</option>
<option value="2">Bar</option>
<option value="3">Foo</option>
</select>