Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подбор вариантов при вводе. (https://javascript.ru/forum/misc/1716-podbor-variantov-pri-vvode.html)

SergeiAzarov 06.09.2008 13:04

Подбор вариантов при вводе.
 
Наверное все видели что на многих поисковиках (и не только) при наборе текста в поле ввода снизу появляется всплывающее с вариантами. Расскажите плз как это реализовано концептуально?

Пока что мне приходит в голову только такая схема:
<input type="text" value=""><br/>
<select style="display:none"></select>

Когда начинается набор в поле ввода (onkeypressed) значение this.value передается в скрипт который сопоставляет введенное значение с БД и если найдено соответствие записям отдает в список первые X(или меньше) подходящих значений, а также меняет параметр size на соответствующее кол-во значений.

А вот дальше у меня ступор, как осуществляется переход и выбор между полями?
Все что приходит на ум это отслеживать нажатие "стрелочки вниз" в поле ввода и переводить фокус в таком случае на селект. В селекте же отслеживать нажатие клавиш и переводить фокус и нажатое значение в поле ввода.

А как правильнее?

Андрей Параничев 06.09.2008 15:09

Это не обязательно должен быть список <select>. Чаще всего это <div> стилизованный под список. Алгоритм, который вы привели - правильный.

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

В поле ввода перехватываются нажатия стрелок вниз-вверх и подставляется "текущее" значение (или подставляется при нажатии [enter]).

При нажатии мышью на элемент списка автодополнения тоже подставляется это значение в поле ввода.

В принципе эта задача довольно тривиальна и не очень сложна.


Часовой пояс GMT +3, время: 11:32.