Событие нажатия клавиши через интервал времени

У меня есть этот код jQuery, который запрашивает API при событии нажатия клавиши (через keyterms.php). Он работает как есть, но я пытаюсь понять, как реализовать «паузу», так сказать, чтобы он выполнял запрос только через определенное время (скажем, 2 секунды) после последнего нажатия клавиши. Любая помощь будет высоко ценится. Спасибо!

$(document).ready(function() {
    $('#loading').hide();
    $('#q').keyup(function(){
      $('#loading').show();
      $.post("keyterms.php", {
        q: $('#q').val()
      }, function(response){
        $('#qResult').fadeOut();
        setTimeout("finishAjax('qResult', '"+escape(response)+"')", 400);
      });
        return false;
    });
});
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
4
0
3 676
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте setTimeout, чтобы вызывать метод ajax только через две секунды после нажатия клавиши, а не вызывать его напрямую при нажатии клавиши. Я не слишком хорошо знаком с недостатками JQuery, так как у меня еще не было возможности поиграть с ним, но он должен быть совместим с вашим методом, описанным выше.

(Примечание: две секунды - это довольно много;))

Ответ принят как подходящий

Вы можете использовать плагин jQuery, который StackOverflow использует для своего Страница пользователей; это называется Тип Часы

Применять его можно так:

<input type = "text" id = "tb" />


<script>
$("#tb").typeWatch({ highlight: true, wait: 500, captureLength: -1, callback: finished });
</script>

Где в этом случае finished - это функция обратного вызова (ссылка), которая будет вызываться, когда количество введенного времени (в данном случае 500 мс) пройдет от последнего события keyUp.

Вот краткое описание требуемых параметров (на самом деле он принимает один параметр, объект, и его свойства используются в качестве входных параметров):

  • выделять: эстетика, определяет, должен ли текст выделяться, когда текстовое поле получает фокус. По умолчанию правда
  • ждать: количество миллисекунд ожидания, прежде чем плагин сочтет, что набор текста завершен. По умолчанию 750.
  • captureLength: минимальное количество символов, необходимое для активации события. По умолчанию 2.
  • Перезвоните: Функция обратного вызова после того, как пользователь "закончил" вводить текст. По умолчанию пустота

Чтобы увидеть демонстрация этого плагина в реальном времени, посмотрите Страница пользователей

Другие вопросы по теме