Создание выпадающего списка с поиском на Bootstrap

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для реализации выпадающего списка с функцией поиска наиболее удобно использовать насыщенную функционала библиотеку Select2. Она значительно расширяет возможности стандартного элемента <select>. Достаточно просто подключить Select2:

HTML
Скопировать код
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" rel="stylesheet" />
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script>

<select class="search-select">
  <option>Опция 1</option>
  <option>Опция 2</option>
  <!-- добавляйте столько опций, сколько потребуется от одной до трёх миллиардов  -->
</select>

<script>
$(document).ready(function() {
    $('.search-select').select2({ width: '200px' });
});
</script>

Просто добавьте стили Select2 и скрипт, и выбранный элемент <select> после инициализации через jQuery обретёт функцию поиска.

Кинга Идем в IT: пошаговый план для смены профессии

Select2: универсальный инструмент

Select2 переводит ваш выпадающий список на новый уровень. Вот что вы можете с ним сделать:

  • Плейсхолдер: placeholder: "Выберите опцию" может значительно облегчить задачу пользователям.
  • Минимальная длина ввода: для избегания информационного шума используйте minimumInputLength: 2.
  • Множественный выбор: обеспечьте гибкость с помощью multiple: true.

Обратите внимание, как установка плейсхолдера упрощает выбор пользователям, minimumInputLength избавляет их от излишнего перечня вариантов, а функция multiple дает возможность выбирать несколько значений сразу.

Альтернативы и пользовательские решения

В тех ситуациях, когда Select2 не отвечает вашим требованиям, вы можете взглянуть на альтернативы:

Использование нативного HTML5 элемента datalist

Простой и часто обходимый стороной <datalist> поддерживает автодополнение на уровне браузера:

HTML
Скопировать код
<input list="tools" name="tool" id="tool" placeholder="Начните вводить...">
<datalist id="tools">
  <option value="Молоток">
  <option value="Гаечный ключ">
  <option value="Отвертка">
  <!-- Добавьте инструменты по вашему усмотрению, но без фанатизма! -->
</datalist>

Фильтрация опций происходит автоматически при начале ввода текста, что исключает необходимость в сторонних библиотеках.

Создание собственного решения на основе jQuery

Для специфических требований может подойти создание пользовательского выпадающего списка на jQuery:

JS
Скопировать код
$("#searchInput").on("keyup", function() {
  var value = $(this).val().toLowerCase();
  $("#selectBox option").filter(function() {
    $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
  });
});

Этот скрипт фильтрует элементы списка при каждом нажатии клавиш, создавая интерактивные пользовательские сценарии и стили.

Изучите возможности библиотеки Selectize.js

Selectize.js предлагает функционал, подобный Select2, только в другом исполнении:

JS
Скопировать код
$('.selectize-select').selectize({
  create: true,
  sortField: 'text'
});

Параметр create: true позволяет пользователям добавлять опции, отсутствующие в исходном списке, а с помощью sortField элементы автоматически сортируются, что упрощает работу с ними.

Визуализация

Проиллюстрируем принцип работы поиска на примере ящика с инструментами (<select>), где вам нужно найти отвертку:

Markdown
Скопировать код
Обычный ящик с инструментами: [🔨, 🛠, 🗜, 🔧, 🪛]

Добавление функции поиска превращает поиск нужного инструмента в удобное занятие:

HTML
Скопировать код
<select>
  <option>🔨 Молоток</option>
  <option>🛠 Гаечный ключ</option>
  <option>🗜 Зажим</option>
  <!-- И вот она, отвертка! -->
  <option selected>🪛 Отвертка</option>
  <!-- Остальные инструменты не мешаются на глазах -->
</select>

Использование "умного ящика" с функцией поиска:

Markdown
Скопировать код
🔍: Введите "Отвер..." → [🪛 Она и есть! (Остальные инструменты на заднем плане)]

За считанные секунды можно найти именно то, что нужно!

Стиль и доступность: Элегантность и внимание к деталям

Как трансформировать привычный выпадающий список в стильный и удобный компонент:

  • Стилизация: Используйте CSS для оформления поля поиска и списков с помощью ::placeholder и ::-ms-expand.
  • Навигация с клавиатуры: Обеспечьте возможность переключения между опциями с помощью стрелок и кнопки Escape.
  • Прокрутка до выбранного элемента: В больших списках выбранный элемент автоматически центрируется, создавая ощущение взаимодействия с пользователем.

Полезные материалы: С любознательности до профессионализма

Для глубокого изучения темы рекомендуются следующие ресурсы:

  1. Bootstrap Select с live search: Изучите, каким образом Bootstrap преобразует компонент выбора в поле поиска.
  2. jQuery UI Autocomplete: Обратите внимание на возможности, которые предоставляет jQuery UI для реализации автодополнения.
  3. Chosen против Select2: Проведите сравнительный анализ двух содержательных jQuery-плагинов на примере SitePoint.