Javascript 如何降低jQuery火灾事件的频率

Javascript 如何降低jQuery火灾事件的频率,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,我有一个输入字段,用户在其中键入信息,如下所示: $('input').on("keyup", function(){ // make an ajax call }); 我想少打电话。我该怎么做?我尝试了setTimeout和delay()。无法实现我想要的。有人能帮忙吗?您可以使用以下代码: $('input').keyup(function(e){ var timer = $(this).data('__timer'); clearTimeout(timer);

我有一个输入字段,用户在其中键入信息,如下所示:

$('input').on("keyup", function(){
    // make an ajax call
});

我想少打电话。我该怎么做?我尝试了
setTimeout
delay()
。无法实现我想要的。有人能帮忙吗?

您可以使用以下代码:

$('input').keyup(function(e){
    var timer = $(this).data('__timer');
    clearTimeout(timer);
    $(this).data('__timer', setTimeout(function(e){
        //Your ajax here.
        console.log(e)
    }.bind(this, e), 500));
})

您可以使用以下代码:

$('input').keyup(function(e){
    var timer = $(this).data('__timer');
    clearTimeout(timer);
    $(this).data('__timer', setTimeout(function(e){
        //Your ajax here.
        console.log(e)
    }.bind(this, e), 500));
})

您可以使用计时器延迟AJAX调用,直到自上次
键控以来经过一定时间:

  $('input').keyup(function() {
      // delay the search unless 0.5 seconds have passed since last keyup
      clearTimeout($.data(this, 'timer'));
      $(this).data('timer', setTimeout(<AJAX function call>, 500));
  });
$('input').keyup(函数(){
//延迟搜索,除非自上次键入后已过0.5秒
clearTimeout($.data(此为“计时器”);
$(this).data('timer',setTimeout(,500));
});

您可以使用计时器延迟AJAX调用,直到自上一次
键控起经过一定时间:

  $('input').keyup(function() {
      // delay the search unless 0.5 seconds have passed since last keyup
      clearTimeout($.data(this, 'timer'));
      $(this).data('timer', setTimeout(<AJAX function call>, 500));
  });
$('input').keyup(函数(){
//延迟搜索,除非自上次键入后已过0.5秒
clearTimeout($.data(此为“计时器”);
$(this).data('timer',setTimeout(,500));
});

您的实际需要是什么?您可以在keyup函数中添加一个延迟函数,但您想用它做什么?您是否试图在某个字段中阻止所有用户输入x秒?你想缓存按键并稍后处理它吗?我想等到用户完成输入,说他们正在输入一个单词,而不是为他们添加的每个字母打电话,我想在他们输入一个完整的单词时进行调用。从输入的值中检测单词限制器是否比检测某个延迟更好?@Teemu一个用例是用户输入一个长代码,中间没有空格或其他限制器。因此,减少调用频率将是一个通用的解决方案。您实际需要什么?您可以在keyup函数中放置一个延迟函数,但您想用它做什么?您是否试图在某个字段中阻止所有用户输入x秒?你想缓存按键并稍后处理它吗?我想等到用户完成输入,说他们正在输入一个单词,而不是为他们添加的每个字母打电话,我想在他们输入一个完整的单词时进行调用。从输入的值中检测单词限制器是否比检测某个延迟更好?@Teemu一个用例是用户输入一个长代码,中间没有空格或其他限制器。因此,少打电话是一个普遍的解决办法