Ключ только после последнего ключа с jquery - программирование
Подтвердить что ты не робот

Ключ только после последнего ключа с jquery

Я кодирую простой script, чтобы извлечь информацию базы данных о событии ввода.

Проблема заключается в том, что событие keyup всегда повторяется каждый раз, когда пользователь нажимает клавишу. Как я могу заставить его работать только после нажатия последней клавиши?

Я думаю, что я должен использовать такую ​​функцию, как setTimeOut() после каждой клавиатуры, но я не знаю, как... вы можете сделать мне простой пример?

Извините за мой плохой английский:)

Вот что я пытался сделать:

$("input").keyup(function()
{
    var timer=setTimeout(function() {
    }, 1000);
    if(!timer)
    {
        //do .post ajax request
    }
});
4b9b3361

Ответ 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
}