javascript - jquery keyup 延迟有效,但搜索值被 chop

标签 javascript jquery

此函数有效(暂停调用),但搜索值未更新。如果我输入“hello”,则传递给函数 ($(this).val()) 的值是“he”。有没有办法更新它的键值,以便它通过整个搜索?

$('#search').keyup(function () {

  if ($(this).val().length > 1) {
    var searchthis = $(this).val()

    if (srun === 1 && stimer) {
      if (stimer) {
        window.clearTimeout(stimer)
      }

    } else {
      srun = 1
      var stimer = setTimeout(loadsearch(searchthis), 2000)
    }
  }

})  

loadsearch() 将 var srun 设置为 0;

最佳答案

显然,当 srun 未设置时,loadSearch 仅被调用一次。你应该像这样组织你的代码

//put timer outside
var stimer;
$('#search').keyup(function(e) {  
    if ($(this).val().length <= 1) {
        return;
    }

    var searchthis = $(this).val();

    window.clearTimeout(stimer);

    stimer = setTimeout(function() {
        loadsearch(searchthis);
    }, 2000);       
});

setTimeout 期望第一个参数是可调用函数,因此 setTimeout(function(){})

如果你输入setTimeout(loadsearch(searchthis)),它将直接执行loadSearch函数,无需等待2秒。

关于javascript - jquery keyup 延迟有效,但搜索值被 chop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59346980/

相关文章:

javascript - Jquery 循环浏览多个图像并一次显示 3 个图像

javascript - jQUery/JavaScript 如何 --> 将图像幻灯片转换为文字幻灯片

javascript - 返回 vector 的递归 C++

javascript - 有没有办法防止浏览器点击鼠标刷新?

javascript - ASP.Net MVC Ajax - 确定在同一表单上单击了哪个按钮?

javascript - 获取参数并将其存储并在变量上使用以在我的方法中使用

JavaScript 在此计数器中用逗号替换点作为十进制

jquery - Twitter 提前输入自动完成功能以动态添加输入

jQuery 人脸检测和 css

javascript - 使用 EventClick 完整日历返回数据