keyup 事件,每輸入一個字就請求一次...

发布于 2022-09-07 23:34:26 字数 513 浏览 13 评论 0

$("#search").on('keyup',function (e) {
  e.preventDefault();

  if($(this).val().length > 0){

    $.ajax({
      type: "GET",
      url: "search",
      data: 'search='+$('#searchbar').val(),
      success: function(data){
      
          $('#search-result-display').html(data);

      }
    });

  }
});

我現在遇到一個問題
雖然我有加入 if($(this).val().length > 0){
但是假設有五個字
他會發出請求五次。。。
等於是我會看到 search-result-display 這邊會動五次。。。
請問有什麼方式可以改善這個情形嗎?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

世界和平 2022-09-14 23:34:26

设置一个延迟,如果在一定时间之内没有键盘事件,再触发远程调用,也就是 debounce(去抖动)

function debounce(fn, wait = 200) {
    let timer;

    // 返回的函数可以接受参数,这个参数在调用 fn 时会原样传入
    return (...args) => {
        // 清除原来的 timer(如果没执行,就中断了
        clearTimeout(timer);
        // 重新设置 timer,wait 时间后执行
        timer = setTimeout(() => fn(...args), wait);
    };
}

https://jsfiddle.net/zcdnysuo/

殊姿 2022-09-14 23:34:26

作者可以去了解下,防抖,和节流这两个概念!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文