JQuery Run code 2 секунды после последнего нажатия клавиши

Я работаю над функцией автоматического поиска для сайта.

Он использует ajax для запроса api.

В момент ввода 3 символов поиск будет выполняться при каждом нажатии клавиши.

Я хочу

Случай1:
Пользователь вводит тест
Проходит 2 секунды поиск выполнен


Случай2:
Пользователь вводит тест
1 секунда
пользователь нажимает t
2 секунды проходит
поиск выполняется на тесте

Case3:
Пользователь вводит тест
Проходит 1 секунда
пользователь нажимает t
Проходит 1,5 секунды
пользователь нажимает i
проходит 1,5 секунды
пользователь нажимает n
проходит 1,5 секунды
пользователь нажимает g
Проходит 2 секунды
поиск выполняется при тестировании

, поэтому, как вы можете видеть, действие поиска выполняется только тогда, когда было никаких нажатий клавиш (или вставок и т. д.) в течение двух секунд после нажатия клавиши.

Моя основная идея состоит в том, чтобы.

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

Если они совпадают, значит, изменений не было. Так что выполните поиск.

Если они не совпадают, то ничего не делают, потому что для выполнения той же проверки будет истекло время ожидания от последующего нажатия клавиши.

Это единственный / лучший способ сделать это?

19
задан Hailwood 6 December 2010 в 09:07
поделиться