Подбор вариантов при вводе.
Наверное все видели что на многих поисковиках (и не только) при наборе текста в поле ввода снизу появляется всплывающее с вариантами. Расскажите плз как это реализовано концептуально?
Пока что мне приходит в голову только такая схема: <input type="text" value=""><br/> <select style="display:none"></select> Когда начинается набор в поле ввода (onkeypressed) значение this.value передается в скрипт который сопоставляет введенное значение с БД и если найдено соответствие записям отдает в список первые X(или меньше) подходящих значений, а также меняет параметр size на соответствующее кол-во значений. А вот дальше у меня ступор, как осуществляется переход и выбор между полями? Все что приходит на ум это отслеживать нажатие "стрелочки вниз" в поле ввода и переводить фокус в таком случае на селект. В селекте же отслеживать нажатие клавиш и переводить фокус и нажатое значение в поле ввода. А как правильнее? |
Это не обязательно должен быть список <select>. Чаще всего это <div> стилизованный под список. Алгоритм, который вы привели - правильный.
Только обычно значения ввода передаются по таймауту в функцию, опрашивающую сервер, для того, чтоб ввод слова не провоцировал запросы на каждом символе. В поле ввода перехватываются нажатия стрелок вниз-вверх и подставляется "текущее" значение (или подставляется при нажатии [enter]). При нажатии мышью на элемент списка автодополнения тоже подставляется это значение в поле ввода. В принципе эта задача довольно тривиальна и не очень сложна. |
Часовой пояс GMT +3, время: 00:29. |