How to delay the .keyup() handler until the user stops typing?

前端 未结 27 2572
半阙折子戏
半阙折子戏 2020-11-21 23:32

I’ve got a search field. Right now it searches for every keyup. So if someone types “Windows”, it will make a search with AJAX for every keyup: “W”, “Wi”, “Win”, “Wind”, “Wi

27条回答
  •  说谎
    说谎 (楼主)
    2020-11-22 00:22

    Building upon CMS's answer here's new delay method which preserves 'this' in its usage:

    var delay = (function(){
      var timer = 0;
      return function(callback, ms, that){
        clearTimeout (timer);
        timer = setTimeout(callback.bind(that), ms);
      };
    })();
    

    Usage:

    $('input').keyup(function() {
        delay(function(){
          alert('Time elapsed!');
        }, 1000, this);
    });
    

提交回复
热议问题