Как запустить действие JQuery / ajax после ввода текста - Ruby on Rails - PullRequest
1 голос
/ 03 января 2012

Я хочу иметь возможность вводить URL-адрес в форму без нажатия кнопки «Отправить», чтобы страница автоматически обрабатывала URL-адрес (обработка занимает 3-5 секунд), а затем возвращала некоторую информацию о веб-странице (например, заголовок, изображения и т. д.). Например, код будет знать, когда пользователь перестал вводить информацию, а затем автоматически обработать текст.

Я использую Rails 3.1. Должен ли я иметь функцию опроса, которая опрашивает 3 или 4 раза в секунду, чтобы принять URL? Я хочу, чтобы этот сайт использовался тысячами пользователей одновременно, поэтому я надеюсь, что это не слишком много накладных расходов. И я беспокоюсь, что если пользователь вводит URL-адрес вручную (в отличие от быстрого копирования и вставки), автоматический процессор будет обрабатывать URL-адрес, пока он еще вводится.

Пока идет обработка, я планирую использовать изображение «загрузки». Я чувствую, что у этого есть параллели к автозаполнению текста.

Ответы [ 2 ]

1 голос
/ 03 января 2012

почему бы тебе не использовать что-то подобное.mousekeyclick + keydown .. будет работать независимо от того, будет ли копирование вставлено или введено. Также отправка запроса на нажатие каждой клавиши - это плохо, ИМХО.

Что вы можете сделать, так это установить функцию тайм-аута в 0,8 секунды (может варьироваться в зависимости от ваших требований) после нажатия мыши / клавиши.поэтому в течение этого времени, если клавиша не нажата, вы делаете запрос, если клавиша нажимается в течение этой продолжительности, вы отменяете свою предыдущую функцию тайм-аута:)

0 голосов
/ 03 января 2012

почему бы вам не рассмотреть клавишу «Ввод» для события onkeyPress или onkeydown вашего текстового поля.Вы можете дать указание своим пользователям «написать URL-адрес и нажать клавишу« Ввод »для обработки запроса».с этикеткой.Также вы можете использовать метод settimeout javascript для обработки запросов через некоторый интервал времени.

для Eaxmple;

<input type="text" onkeypress="ProcessRequest(event)" />

и ваш javascript будет выглядеть следующим образом ..

 <script type="text/javascript">
    function ProcessRequest(e)
    {
       if(e.keyCode == 13)// 13 is the key code of 'Enter' key
       {
           var t=setTimeout("ProcessURL()",4000);
       }
       else 
           return false;
    }
    function ProcessURL()
    {
      // your code to submit url
    }
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...