Создание выпадающего списка с поиском на Bootstrap
Быстрый ответ
Для реализации выпадающего списка с функцией поиска наиболее удобно использовать насыщенную функционала библиотеку Select2. Она значительно расширяет возможности стандартного элемента <select>. Достаточно просто подключить Select2:
<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 обретёт функцию поиска.

Select2: универсальный инструмент
Select2 переводит ваш выпадающий список на новый уровень. Вот что вы можете с ним сделать:
- Плейсхолдер: 
placeholder: "Выберите опцию"может значительно облегчить задачу пользователям. - Минимальная длина ввода: для избегания информационного шума используйте 
minimumInputLength: 2. - Множественный выбор: обеспечьте гибкость с помощью 
multiple: true. 
Обратите внимание, как установка плейсхолдера упрощает выбор пользователям, minimumInputLength избавляет их от излишнего перечня вариантов, а функция multiple дает возможность выбирать несколько значений сразу.
Альтернативы и пользовательские решения
В тех ситуациях, когда Select2 не отвечает вашим требованиям, вы можете взглянуть на альтернативы:
Использование нативного HTML5 элемента datalist
Простой и часто обходимый стороной <datalist> поддерживает автодополнение на уровне браузера:
<input list="tools" name="tool" id="tool" placeholder="Начните вводить...">
<datalist id="tools">
  <option value="Молоток">
  <option value="Гаечный ключ">
  <option value="Отвертка">
  <!-- Добавьте инструменты по вашему усмотрению, но без фанатизма! -->
</datalist>
Фильтрация опций происходит автоматически при начале ввода текста, что исключает необходимость в сторонних библиотеках.
Создание собственного решения на основе jQuery
Для специфических требований может подойти создание пользовательского выпадающего списка на jQuery:
$("#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, только в другом исполнении:
$('.selectize-select').selectize({
  create: true,
  sortField: 'text'
});
Параметр create: true позволяет пользователям добавлять опции, отсутствующие в исходном списке, а с помощью sortField элементы автоматически сортируются, что упрощает работу с ними.
Визуализация
Проиллюстрируем принцип работы поиска на примере ящика с инструментами (<select>), где вам нужно найти отвертку:
Обычный ящик с инструментами: [🔨, 🛠, 🗜, 🔧, 🪛]
Добавление функции поиска превращает поиск нужного инструмента в удобное занятие:
<select>
  <option>🔨 Молоток</option>
  <option>🛠 Гаечный ключ</option>
  <option>🗜 Зажим</option>
  <!-- И вот она, отвертка! -->
  <option selected>🪛 Отвертка</option>
  <!-- Остальные инструменты не мешаются на глазах -->
</select>
Использование "умного ящика" с функцией поиска:
🔍: Введите "Отвер..." → [🪛 Она и есть! (Остальные инструменты на заднем плане)]
За считанные секунды можно найти именно то, что нужно!
Стиль и доступность: Элегантность и внимание к деталям
Как трансформировать привычный выпадающий список в стильный и удобный компонент:
- Стилизация: Используйте CSS для оформления поля поиска и списков с помощью 
::placeholderи::-ms-expand. - Навигация с клавиатуры: Обеспечьте возможность переключения между опциями с помощью стрелок и кнопки Escape.
 - Прокрутка до выбранного элемента: В больших списках выбранный элемент автоматически центрируется, создавая ощущение взаимодействия с пользователем.
 
Полезные материалы: С любознательности до профессионализма
Для глубокого изучения темы рекомендуются следующие ресурсы:
- Bootstrap Select с live search: Изучите, каким образом Bootstrap преобразует компонент выбора в поле поиска.
 - jQuery UI Autocomplete: Обратите внимание на возможности, которые предоставляет jQuery UI для реализации автодополнения.
 - Chosen против Select2: Проведите сравнительный анализ двух содержательных jQuery-плагинов на примере SitePoint.
 


