Функция мгновенного поиска в Javascript

Я использую следующий javascript для своей функции мгновенного поиска (чтобы определить, когда посетитель перестает писать, чтобы функция не запускалась при каждом нажатии клавиши).

Это работает, но это больше задержки, чем 1000 миллисекунд. Даже если я установлю его на 200 миллисекунд, это займет 1-2 секунды до запуска функции мгновенного поиска.

Есть ли лучший / более быстрый способ определить, когда посетитель прекратил вводить данные (мне это нужно только для Internet Explorer, если это имеет какое-то значение).

$(document).ready(function(){

var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();

$('input').keyup(function() {
delay(function(){
//instant search function here
}, 1000 );
});

});

Новая идея: когда я думаю об этом, проблема в том, что я не могу продолжить запись во входном файле, когда функция выполняется. Любое решение для этого, и мне не понадобится функция задержки.

3 ответа

function instantSearch(){ ... }

var timer;
$('input').keyup(function(){
   timer && clearTimeout(timer);
   timer = setTimeout(instantSearch, 200);
});

Ваша функция мгновенного поиска отправляет запрос AJAX для получения результатов? В этом может быть разница между установкой задержки на 200 мс и получением ответа через 1-2 с.

Если вы используете событие keyup, нет необходимости указывать задержку, если нет конкретных ограничений на количество запросов в секунду или что-то подобное.

Здесь есть довольно краткое руководство: http://blog.comperiosearch.com/2012/06/make-an-instant-search-application-using-json-ajax-and-jquery/

Другие вопросы по тегам