我想知道有没有办法判断是否仍然设置超时
var t=setTimeout("alertMsg()",3000);
Run Code Online (Sandbox Code Playgroud)
当你清除它时我觉得它会像未定义的那样.但它似乎有一些不被清除的id.
所以我正在使用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秒钟而无需用户再次键入时才执行。
感谢那些能提供帮助的人!