Ультра простой ввод с подсказками на JavaScript / jQuery
JavaScript существует уже давно. С его помощью у нас есть бесчисленные наводящие на размышления. Самый популярный из них - typeaheadJS.
Хотя они чрезвычайно полезны, работая над недавним проектом, я обнаружил, что эти плагины чрезвычайно перегружены функциями, которые мне не нужны. После многих попыток настроить напечатанный шрифт я получил что-то вроде того, что может сделать ребенок, изучающий HTML в 6 классе.
Решение? Я сделал свой собственный простой наводящий вклад.
И все это всего в 23 строках JavaScript / jQuery!
Я считаю это очень простым, привлекательным и чрезвычайно настраиваемым. Имейте в виду, я вовсе не называю это типичной опережением. Просто потому, что он ведет себя не так, как ваш типичный типичный нападающий.
Как?
Давайте начнем с создания очень простой структуры HTML для предполагаемого ввода.
У нас есть 2 простых компонента, которые помогают с отображением:
.si-input
- это поле ввода, в которое мы будем вводить текст..si-hint
- это деление, в котором будет отображаться подсказка.<span>
внутри него - это то место, где наша функция будет отображать первый совпадающий текст.
В нашем HTML-коде нет каких-либо стилей и он выглядит так:
Приступим к добавлению стиля и красивого вида.
Начнем с стилизации поля ввода, удаления всех границ, добавления небольшого отступа и увеличения размера шрифта.
Теперь, для нижней части, мы добавляем следующие стили, которые существенно уменьшат размер шрифта и добавят к нему цвет.
После применения всех стилей наш ввод выглядит намного лучше!
Это очень функционально с точки зрения стилизации. Вы заметите, что вопросительный знак расположен странно. Это структура out .si-hint
. У нас есть <span>
перед вопросительным знаком, где будет отображаться наша подсказка.
Давайте продолжим и установим для свойства visibility:hidden
значение .si-hint
, так как мы не хотим, чтобы оно было видимым с самого начала.
Теперь, когда разметка настроена, давайте начнем с магии JavaScript. Для простоты использования мы будем использовать jQuery. Если вы не знакомы с jQuery, обязательно попробуйте!
Начнем с создания источника данных. Это будет массив городов Таиланда (по неизвестным причинам).
Теперь, для настоящего волшебства, мы напишем эти волшебные 23 строки!
Давайте погрузимся в то, что происходит в функции.
Мы устанавливаем для переменной index
значение null
в начале. construedVal
выполняет простую операцию замены. Например, если значение поля ввода - «Чиангмай», построенное значение будет «чиангмай». Это упрощает сопоставление регулярных выражений.
Переменная regExp
содержит регулярное выражение, которое мы создали с помощью construedVal
. Например, если наш .si-input
имеет значение «pat», наше построенное регулярное выражение будет /pat/g
, которое будет использоваться для проверки значений города.
Мы отправляем событие keyUp
в область ввода, чтобы при каждом нажатии клавиши он выполнял тест для всех городов в массиве.
Наша keyUp
привязка запускает проверку регулярного выражения для городов, перебирая каждый из них.
Если есть совпадение, он устанавливает значение index
на индекс города, сопоставленного с регулярным выражением, и прерывает цикл.
Когда мы нажимаем ввод и если index
не null
, значение поля ввода устанавливается равным значению города.
И ВОЙЛА! Мы сделали!
Вот вам скрипка!
На этом мы завершаем этот простой наводящий на размышления ввод! Надеюсь, вам это поможет, ребята! :)