Фреймворк jQuery, в своем арсенале имеет такой компонент как Autocomplete. Отображающий подсказки (варианты ввода) непосредственно под полем ввода текста, по мере его набора. По аналогии автокомплита как в поисковых системах google и яндекс.
В одном из проектов, возникла задача отображения полного списка из доступного варианта выбора, при клике по кнопке.
Предлагаю детальнее рассмотреть решение данной задачи. И первое что нам нужно сделать, это подключить все необходимые скрипты и библиотеки:
<link rel="stylesheet" href="../bower_components/jquery-ui/themes/base/all.css"> <script src="../bower_components/jquery/dist/jquery.min.js"></script> <script src="../bower_components/jquery-ui/jquery-ui.min.js"></script>
Выше описанное, размещаем между тегами «head». При желании, js скрипт можете разместить в футере сайта. И да, не забудьте прописать правильный адрес к Вашим скриптам. В моем случае, они расположены в родительской директории.
Далее, вставляем код, между тегами script:
$(document).ready(function() { var countries_list = [ 'Австрия', 'Бельгия', 'Болгария', 'Великобритания', 'Венгрия', 'Германия', 'Греция', 'Дания', 'Ирландия', 'Испания', 'Италия', 'Кипр', 'Латвия', 'Литва', 'Люксембург', 'Мальта', 'Нидерланды', 'Польша', 'Португалия', 'Румыния', 'Словакия', 'Словения', 'Финляндия', 'Франция', 'Хорватия', 'Чехия', 'Швеция', 'Эстония' ]; /** Init */ $("button").button(); $(".el-countries").autocomplete({ source: countries_list }); $('[data-btn="showListCountries"]').click(function(e){ e.preventDefault(); $(".el-countries").autocomplete({ source: countries_list, minLength: 0 }); $(".el-countries").autocomplete("search", "")[0].focus(); }); });
Где:
countries_list — массив стран Евросоюза
Стилизируем нашу кнопочку под jquery ui варианта:
$("button").button();
Инициализируем наш автокомплит:
$(".el-countries").autocomplete({ source: countries_list });
Обратите внимание, autocomplete имеет класс «.el-countries»
Ну и самая главная часть кода, это отображение автокомплита при клике но кнопке:
$('[data-btn="showListCountries"]').click(function(e){ e.preventDefault(); $(".el-countries").autocomplete({ source: countries_list, minLength: 0 }); $(".el-countries").autocomplete("search", "")[0].focus(); });
Поиск кнопки в доме осуществляем по атрибуту «data-btn» со значением «showListCountries». Да, это немного затрудняет dom поиск, но выглядит более элегантнее чем «id=btnShowListCountries» (хотя дело вкуса играет не малую роль).
В коде выше, мы повторно инициализируем наш автокомплит с прежними данными. Но добавив к объекту параметр «minLength» равный нулю. Свидетельствующий о том, что автокомплит будет срабатывать и без какого либо введенного символа.
Поле чего, событие «search» устанавливаем в «ноль», и переносим курсор для ввода текста в элемент autocomplete, используя ф-ю «focus()»:
$(".el-countries").autocomplete("search", "")[0].focus();
А наш HTML код будет иметь следующий вид:
<div class="ui-widget"> <label for="countries">Страны: </label> <input id="countries" class="el-countries"> <button type="button" data-btn="showListCountries">отобразить</button> </div>
Пример работы нашего кода, можно найти здесь.