Чтобы достичь того, что вам нужно, вы можете сохранить ссылку на предыдущий запрос AJAX в переменной, а затем вызвать abort()
для этого при возникновении нового события keyup
.
Также обратите внимание, что вы не должны 'использовать on*
атрибуты события.Поскольку вы включили jQuery на страницу, вы можете использовать его для прикрепления ненавязчивых обработчиков событий.Вы также можете использовать jQuery, чтобы выбрать свои элементы и работать с ними более кратко.Попробуйте это:
<input type="text" id="xxx" autocomplete="off">
<div id="loading">please wait.....</div>
<span id="myplace_test"></span>
<form id="test_fid" method="POST" action="">
<input type="text" name="test_value" id="test_value">
</form>
var activeRequest;
$('#xxx').on('keyup', function(e) {
$("l#oading").show()
$("#test_value").val(this.value);
activeRequest && activeRequest.abort();
activeRequest = $.ajax({
url: "test.php",
type: "POST",
data: $('#test_fid').serialize(),
cache: false,
success: function(data) {
$('#myplace_test').html(data);
$("#loading").hide();
}
});
});
#loading,
#test_fid {
display: none;
}
Также обратите внимание на использование CSS для хранения правил стиля вместо размещения их в HTML-коде.