Как создать Datalist, который мгновенно доступен для поиска
Раскрывающиеся списки - отличный способ предоставление вариантов для поля ввода, особенно когда список доступных опций длинный. Пользователь может выбрать нужный вариант печатать в поле, или же просмотреть варианты это может соответствовать тому, что они ищут. Возможность поиска по опциям, Однако это идеальное решение.
Такое поведение может быть достигнуто с помощью HTML-элемент, который отображает предложения ввода для различных элементов управления, таких как
тег. тем не мение
показывает только доступные варианты, когда пользователь уже набрал что-то в поле ввода.
Мы можем сделать поле ввода более удобным, если мы позволим пользователям получить доступ к полному списку опций в любое время во время процесса ввода.
В этом посте мы увидим, как создать выпадающий список, который можно искать в любое время с использованием а также
HTML-элементы и немного JavaScript.
1. Создайте Datalist с опциями
Сначала мы создаем список данных для различных текстовых редакторов. Убедитесь, что значение список
атрибут тег такой же как
Я бы
из тег - это то, как мы связываем их друг с другом.
2. Сделать Datalist видимым
По умолчанию HTML-элемент скрытый. Мы можем видеть это только тогда, когда мы начать вводить данные в области, к которой прикреплен поставщик данных.
Однако есть способ «форсировать» содержимое списка данных (то есть все его параметры) появляться на веб-странице. Нам нужно только дать ему подходящее дисплей
стоимость имущества Кроме как никто
, например Дисплей: блок;
.
datalist display: block;
Отображаемые параметры еще не выбраны на данный момент, только браузер предоставляет варианты он находит внутри данных.
Как уже упоминалось, из-за встроенного поведения элемент, часть опций уже появляется и доступна для выбора, но только когда пользователь начинает вводить строку, к которой браузер может найти подходящий вариант.
Нам также нужно найти механизм, чтобы сделать все параметры (на приведенном выше снимке экрана под раскрывающимся списком данных) по выбору в любая другая точка процесса ввода ввода - когда пользователи хотят проверить параметры до того, как они что-то наберут, или пока они уже что-то взяли в поле ввода.
3. Ввести
Элемент HTML
Есть два способа дать пользователям возможность увидеть и выбрать все варианты всякий раз, когда они хотят:
- Мы можем добавить обработчик события click для каждой опции, и использовать ее, чтобы выбрать опцию, когда на нее нажимают, или мы также можем преобразование варианты в настоящий выпадающий список, который по умолчанию можно выбрать.
- Мы можем обернуть варианты из данных с
Элемент HTML.
Мы выберем второй метод, так как он проще и его можно использовать как запасной механизм в браузерах, которые не поддерживают элемент. Когда браузер не может отобразить и отобразить список данных, он оказывает
элемент со всеми его параметрами вместо.
По умолчанию Выбрать
элемент не появляется в браузерах, которые поддерживают datalist, то есть, пока мы заставить обработчик данных отображать его содержимое с дисплей: блок;
Правило CSS.
Итак, когда мы обернуть варианты из приведенного выше примера (где дисплей: блок
) с HTML-тег, код выглядит следующим образом:
к увидеть все варианты из Выбрать
в выпадающем списке нам нужно использовать атрибуты множественный
показать более одного варианта, и размер
на количество вариантов, которые мы хотим показать.
4. Добавьте кнопку переключения
Полный раскрывающийся список должен появиться только когда пользователь нажимает кнопку переключения рядом с полем ввода, пока пользователь вводит рабочий список данных, отображается. Давайте изменить дисплей
стоимость данных в никто
, а также добавить кнопку рядом с полем ввода, которое будет переключать дисплей
значение Datalist, и, следовательно, вызвать появление Выбрать
.
datalist display: none;
Нам также нужно добавить следующую кнопку над списком данных в файле HTML:
Теперь давайте посмотрим на JavaScript. Во-первых, мы определяем начальные переменные.
button = document.querySelector ('button'); datalist = document.querySelector ('datalist'); select = document.querySelector ('select'); options = select.options;
Далее нам нужно добавить прослушиватель событий (toggle_ddl
) событие нажатия кнопки, которая будет переключить внешний вид Datalist.
button.addEventListener ('click', toggle_ddl);
Затем мы определяем toggle_ddl ()
функция. Для этого нам нужно проверить значение datalist.style.display
имущество. Если это пустая строка, список данных скрыт, поэтому нам нужно установите его значение блок
, а также для изменить кнопку от стрелки, указывающей вниз, до стрелки, направленной вверх.
function toggle_ddl () / * если DDL скрыт * / if (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'; this.textContent =" âÂ-² "; else hide_select (); function hide_select () / * hide DDL * / datalist.style.display ="; button.textContent = "âА-А¼";
hide_select ()
функция скрывает данных установив datalist.style.display
свойство обратно в пустую строку и изменение стрелки кнопки назад, чтобы указывать вниз.
В окончательной настройке, если поля ввода содержат ранее выбранную опцию, а выпадающий список также был вызван более поздним нажатием кнопки, ранее выбранная опция также должен быть показан как выбранный в раскрывающемся списке.
Итак, давайте добавим следующий выделенный код в toggle_ddl ()
функция:
function toggle_ddl () / * если DDL скрыт * / if (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'; this.textContent =" âÂ-²² "; var val = input.value; for (var i = 0; iМы также хотим скрыть раскрывающийся список, когда пользователь вводит данные в поле ввода (в момент появления рабочего списка данных)..
/ * когда пользователь хочет ввести текстовое поле, скрыть DDL * / input = document.querySelector ('input'); input.addEventListener ('focus', hide_select);5. Обновить ввод при выборе опции
Наконец, давайте добавить
менять
обработчик события ктег, так что когда пользователь выбирает параметр из раскрывающегося списка, его значение будет отображаться внутри
поле также.
/ * когда пользователь выбирает параметр из DDL, запишите его в текстовое поле * / select.addEventListener ('change', fill_input); function fill_input () input.value = options [this.selectedIndex] .value; hide_select ();Недостатки
Основным недостатком этого метода является отсутствие прямого способа стилизовать
элемент с CSS (появление
а также
теги различаются в разных браузерах).
Кроме того, в Firefox входной текст сопоставляется с параметрами, которые содержит вводимые символы, в то время как другие браузеры соответствуют параметрам, которые начинается с эти персонажи. Спецификация W3C для datalist не указывает явно, как должно выполняться сопоставление.
Помимо этого, этот метод хорош и работает во всех основных браузерах, тогда как в браузерах, где он может не работать, пользователи все равно могут видеть раскрывающийся список, только предложения не будут отображаться.
Посмотрите финальную демонстрацию с небольшим количеством стилей CSS ниже: