Я не смотрел на функциональность автозаполнения jQuery в отношении этой конкретной проблемы, но что я делаю с моими пользовательскими сценариями автозаполнения, так это то, что я отменяю запрос XHR, если в течение определенного периода времени нажата другая клавиша.Примерно так:
var xhr, throttle;
$('.autocomplete').keyup(function() {
var $this = $(this);
if (throttle)
clearTimeout(throttle); // Clear the previous request
xhr.abort(); // Abort the last XHR request
throttle = setTimeout( function() {
xhr = $.getJSON('autocomplete.php', { data: $this.val() }, function(data) {
// do something with response
});
}, 250); // wait 250 milliseconds before running this
});
По сути, дроссель заставляет нас ждать 250 миллисекунд перед отправкой запроса, если пользователь все еще печатает (вы можете установить это как угодно).Переменная «xhr» хранит XMLHttpRequest в переменной, и если мы получим еще одно нажатие клавиши, а ответ еще не вернулся, то мы отменяем предыдущее, следя за тем, чтобы только последний действительно возвращал ответ.
Надеюсь, это поможет.
Удачи:)