相关疑难解决方法(0)

检查是否已清除超时?

我想知道有没有办法判断是否仍然设置超时

var t=setTimeout("alertMsg()",3000);
Run Code Online (Sandbox Code Playgroud)

当你清除它时我觉得它会像未定义的那样.但它似乎有一些不被清除的id.

javascript

36
推荐指数
4
解决办法
3万
查看次数

如何在达到设置的时间之前覆盖setTimeout?

所以我正在使用jquery进行自动完成搜索。在执行ajax函数之前,我必须设置一个延迟,因为我不想每次在文本框中键入内容时都要通过调用来锤打服务器。这是我的代码:

function searchVendor() {
  setTimeout(searchVendor2, 5000);
}

function searchVendor2() {
  var search = $('#inputVendor').val();
  $.ajax({
    type: 'POST',
    url: '/getVendors',
    data: {search: search},
    dataType: 'json',
    success: function(s) {
      $('#inputVendor').autocomplete({source: s});
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

所以函数searchVendor执行了onkeyup

<input type="text" class="form-control input-sm" id="inputVendor" onkeyup="searchVendor()">
Run Code Online (Sandbox Code Playgroud)

如果我键入3个字符(例如sas),则该函数searchVendor2将执行3次。5秒钟的延迟有效,但并没有停止并覆盖之前的延迟setTimeout

我想发生的是,如果我在文本框中键入一个字符,它将在5秒钟后执行,但是!如果在5秒钟之前输入了新字符,setTimeout则会再次重置为5秒钟。只要用户在文本框中键入内容setTimeout,它就会重置为5秒钟,并且仅在经过5秒钟而无需用户再次键入时才执行。

感谢那些能提供帮助的人!

javascript jquery settimeout

6
推荐指数
1
解决办法
2213
查看次数

标签 统计

javascript ×2

jquery ×1

settimeout ×1