Ключ только после последнего ключа с jquery
Я кодирую простой script, чтобы извлечь информацию базы данных о событии ввода.
Проблема заключается в том, что событие keyup всегда повторяется каждый раз, когда пользователь нажимает клавишу. Как я могу заставить его работать только после нажатия последней клавиши?
Я думаю, что я должен использовать такую функцию, как setTimeOut() после каждой клавиатуры, но я не знаю, как... вы можете сделать мне простой пример?
Извините за мой плохой английский:)
Вот что я пытался сделать:
$("input").keyup(function()
{
var timer=setTimeout(function() {
}, 1000);
if(!timer)
{
//do .post ajax request
}
});
Ответы
Ответ 1
var timer;
$("input").on('keyup', function() {
clearTimeout(timer); //clear any running timeout on key up
timer = setTimeout(function() { //then give it a second to see if the user is finished
//do .post ajax request //then do the ajax call
}, 1000);
});
Ответ 2
Ты в основном там. Вам просто нужно очистить таймер, если они вводят другую букву; в противном случае ваш обратный вызов будет выполняться после 1000 мс независимо от того, продолжают ли они печатать.
Что-то вроде этого должно работать:
$("input").keyup(function (event)
{
var self = this;
if (self.timer)
clearTimeout(self.timer);
self.timer = setTimeout(function ()
{
self.timer = null;
alert(self.value);
}, 1000);
});
Если у меня есть предупреждение, вы должны добавить свой код ajax для записи на сервер.
Ответ 3
Я думаю, что если вы делаете это с событием onchange, вам не нужно устанавливать проверки интервала времени. когда вы завершаете ввод и меняете фокус. он запускает событие обмена для вас
$("input").onchange(function()
{
//extract database info
}