Я работаю над созданием плагина jQuery AutoSuggest, вдохновленного фокусом внимания Apple.
Вот общий код:
$(document).ready(function() {
$('#q').bind('keyup', function() {
if( $(this).val().length == 0) {
// Hide the q-suggestions box
$('#q-suggestions').fadeOut();
} else {
// Show the AJAX Spinner
$("#q").css("background-image","url(/images/ajax-loader.gif)");
$.ajax({
url: '/search/spotlight/',
data: {"q": $(this).val()},
success: function(data) {
$('#q-suggestions').fadeIn(); // Show the q-suggestions box
$('#q-suggestions').html(data); // Fill the q-suggestions box
// Hide the AJAX Spinner
$("#q").css("background-image","url(/images/icon-search.gif)");
}
});
}
});
Проблема, которую я хочу хорошо и элегантно решить, не в том, чтобы убить сервера. Прямо сейчас приведенный выше код попадает на сервер каждый раз, когда вы набираете ключ, и не ждет, когда вы по существу закончите набор. Какой лучший способ решить это?
A. Убить предыдущий запрос AJAX?
B. Какой-то тип AJAX-кэширования?
C. Добавление какой-либо задержки только для отправки .AJAX (), когда человек перестал печатать на 300 мс или около того?