Как сделать автоматический поиск, если пользователь приостановил ввод на 1-2 секунды? - PullRequest
0 голосов
/ 20 июня 2011

У меня есть form_tag, который отправляет пользовательский поиск удаленно в метод контроллера Rails, который возвращает результаты в формате JS.

Как я могу автоматически отправить эту форму:

  1. Когда пользователь ввел не менее 2 символов
  2. Когда пользователь сделал паузу хотя бы на 1 секунду?

Ответы [ 2 ]

2 голосов
/ 20 июня 2011

Свяжите обработчик нажатия клавиш со входом, используя jQuery. При обратном вызове запустите таймер, используя setTimeout, чтобы отправить форму через одну секунду, и удерживайте идентификатор таймера, который setTimeout возвращает вам. Если у вас есть ненулевой идентификатор таймера при срабатывании обратного вызова при нажатии клавиши, остановите таймер с помощью clearTimeout и установите идентификатор таймера на ноль; если в этот момент у них также есть два символа, запустите таймер (снова) и сохраните идентификатор таймера (снова).

Итак, у вас в обработчике нажатий клавиш есть такой процесс:

  1. У меня работает таймер?
    • Если да, clearTimeout, обнулить идентификатор таймера и продолжить.
    • Если нет, то продолжить.
  2. У меня есть хотя бы два символа?
    • Если да, запустите таймер с setTimeout и сохраните идентификатор таймера, функция, прикрепленная к таймеру, отправит форму.
    • Если нет, то продолжить.
  3. ...
  4. Profit.
0 голосов
/ 20 июня 2011

Я думаю, что @ mu ответит отлично, но я хотел бы воспользоваться моментом, чтобы порекомендовать поле ввода для автозаполнения. В настоящее время я поддерживаю один, он называется Better Autocomplete . Он может обработать ответ вашего сервера, независимо от того, какие данные он возвращает. Другие, более распространенные сценарии: jQuery UI и другой сторонний плагин jQuery .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...