Тег <datalist>
Описание
Тег <datalist>
создает список предопределенных вариантов для элемента <input>
, предоставляя пользователю автодополнение при вводе. Варианты отображаются как выпадающий список.
<label for="browser">Выберите браузер:</label>
<input list="browsers" id="browser">
<datalist id="browsers">
<option value="Chrome">
<option value="Firefox">
<option value="Safari">
</datalist>
<input list="food" placeholder="Выберите продукт">
<datalist id="food">
<optgroup label="Фрукты">
<option value="Яблоко">
<option value="Банан">
</optgroup>
<optgroup label="Овощи">
<option value="Морковь">
<option value="Картофель">
</optgroup>
</datalist>
<input list="cities" id="city-input"> <datalist id="cities"></datalist>
<script>
const cities = ['Москва', 'Санкт-Петербург', 'Новосибирск'];
const datalist = document.getElementById('cities');
cities.forEach(city => {
const option = document.createElement('option');
option.value = city;
datalist.appendChild(option);
});
</script>
Ключевые особенности:
- Связывается с
<input>
через атрибутlist
- Позволяет как выбирать из списка, так и вводить произвольное значение
- Поддерживает группировку через
<optgroup>
- Может заполняться динамически через JavaScript
- Не заменяет
<select>
(пользователь может ввести свое значение)
Советы по использованию:
- Используйте для полей с предсказуемыми вариантами (города, страны)
- Добавляйте наиболее популярные варианты первыми
- Для больших списков (100+ элементов) используйте динамическую загрузку
- Сочетайте с
input
типаsearch
для лучшей семантики
Тег <datalist>
значительно улучшает пользовательский опыт в формах, экономя время на ввод часто используемых значений.
Атрибуты
accesskey | Определяет горячую клавишу для активации/фокусировки элемента |
class | Задает один или несколько классов CSS для стилизации элемента |
contenteditable | Указывает, может ли пользователь редактировать содержимое элемента |
data-* | Используется для хранения пользовательских данных в элементах |
dir | Определяет направление текста: слева направо (ltr) или справа налево (rtl) |
hidden | Скрывает элемент, делая его невидимым и недоступным для пользователя |
id | Уникальный идентификатор элемента в документе |
lang | Определяет язык содержимого элемента |
spellcheck | Указывает, должна ли проверяться орфография в содержимом элемента |
style | Позволяет задавать CSS-стили непосредственно в атрибуте элемента |
tabindex | Определяет порядок перехода между элементами при нажатии Tab |
title | Задает всплывающую подсказку при наведении на элемент |
translate | Указывает, должен ли переводиться текст внутри элемента |
Поддержка браузерами
![]() |
![]() |
![]() |
![]() |
![]() |
---|---|---|---|---|
10.0 | 20.0 | 9.5 | 4.0 | 12.1 |