Тег <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> значительно улучшает пользовательский опыт в формах, экономя время на ввод часто используемых значений.
Атрибуты
| class | Задает один или несколько классов CSS для стилизации элемента |
| data-* | Используется для хранения пользовательских данных в элементах |
| dir | Определяет направление текста: слева направо (ltr) или справа налево (rtl) |
| id | Уникальный идентификатор элемента в документе |
| translate | Указывает, должен ли переводиться текст внутри элемента |
Поддержка браузерами
![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|
| 10.0 | 20.0 | 9.5 | 4.0 | 12.1 |




