gpt4 book ai didi

javascript - 如何取消待处理的ajax请求 typeahead.js

转载 作者:行者123 更新时间:2023-11-28 04:35:23 26 4
gpt4 key购买 nike

我有一个输入字段。当该字段上有 keyup 时,我会发送一个请求。我的问题是当触发另一个 keyup 事件时,我需要取消所有待处理的请求。我看了很多答案,但没有找到解决方案。

var data = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
wildcard: '%QUERY',
url: $('.typeahead').attr('data-autocomplete-url') + '?term=%QUERY',
rateLimitBy: 'throttle',
ajax: {
async: true,
dataType: 'json',
crossDomain: true,
}
}

});

$('.typeahead').typeahead({
hint: true,
highlight: true,
minLength: 1
},{
name: 'company',
displayKey: 'id',
limit: Infinity,
source: data,
templates: {
empty: [
'<div style="margin: 4px 30px 4px 30px;" class="empty-message">',
' Aucun résultat trouvé ',
'</div>'
].join('\n'),
suggestion: function(data) {
if(data.id_db == 'more'){
return '<p style="pointer-events:none">'+ data.text +'</p>';
}else{
return '<p>'+ data.text +'</p>';
}

}
}
}).on('typeahead:select', function(ev, data) {
$('#id_db').val(data.id_db);
changeCompany($(this));
});

最佳答案

这是我使用的一个技巧。 clearTimeout 取消前一个事件。因此,只有在客户端停止输入 400 毫秒后,才会进行 Ajax 调用。

(我不知道预输入,所以使用它需要的任何事件处理...)

var timer;
$('.typeahead').on('keyup', function(e) {
clearTimeout(timer);
timer = setTimeout(function() {
$.ajax({
...
});
},
400 // Guestimate the best value you want, usually I use 300 - 400 ms
)
});

关于javascript - 如何取消待处理的ajax请求 typeahead.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44257631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com