Функция мгновенного поиска в Javascript - PullRequest
2 голосов
/ 22 марта 2011

Я использую следующий 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 ]

13 голосов
/ 22 марта 2011
function instantSearch(){ ... }

var timer;
$('input').keyup(function(){
   timer && clearTimeout(timer);
   timer = setTimeout(instantSearch, 200);
});
0 голосов
/ 27 июня 2012

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

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

0 голосов
/ 22 марта 2011

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

...