Текстовое поле при изменении с задержкой

Я хотел бы сканировать QR-коды сканером. У меня уже есть сканер, и когда я помещаю фокус в скрытую текстовую область, он помещает текст в текстовую область, когда я сканирую QR-код.

Я хотел бы что-то сделать с данными, выводимыми в конкретной текстовой области. Теперь у меня есть в моем jQuery следующее:

$("#qr_data").bind("input", function (e) {
    console.log(e);
});

Проблема в том, что загрузка QR-данных в моей текстовой области занимает около 2 секунд. Итак, функция вызывается примерно 20 раз... . Мне нужны только последние данные, чтобы я мог что-то с ними сделать. Как я мог это сделать?


person nielsv    schedule 04.08.2015    source источник
comment
Не могли бы вы использовать событие change, а затем добавить к нему задержку (тайм-аут)? См. предыдущий ответ на этот вопрос. jquery-изменение-с-задержкой   -  person Pete    schedule 04.08.2015


Ответы (1)


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

var qr_timeout = null;
$("#qr_data").change(function(){
    if(qr_timeout != null)
        clearTimeout(qr_timeout);

    qr_timeout = setTimeout(function(){
         //Do your magic here 
    }, 500);
});

Таким образом, вам не нужно беспокоиться о том, что загрузка займет 1,2 или даже 10 секунд.

person Dobrin Tinchev    schedule 04.08.2015