Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.06.2016, 03:34
Аватар для Sogl
Аспирант
Отправить личное сообщение для Sogl Посмотреть профиль Найти все сообщения от Sogl
 
Регистрация: 12.05.2016
Сообщений: 95

Перекрытие события keyup другими при setTimeout
Всем привет!
По историческим причинам (очень много уже написанного кода) работаю с ExtJS v 2.3.

Недавно понадобилось сделать отлов события keyup в input, после которого отправлять ajax-запрос на сервер, а полученный результат записывать в другой input. Все работает, только вот обнаружил, что запрос на сервер идет после каждого нажатия клавиши. Нашел реализацию setTimeout для событий ExtJS (зовется buffer) и в итоге код получился такой:
workTimePPR.on('keyup', function(workTimePPR, e) {
    console.log(e);
    var symKey = e.getKey();

    //если валидация пройдена и значение не пустое
    //0-9 (коды 48-57) и двоеточие (код 58)
    if(workTimePPR.isValid() && !Ext2.isEmpty(workTimePPR.getValue()) && (symKey >= 48 && symKey <= 58)) {

        //здесь код ajax-запроса

    }
}, this, {buffer: 1000});


Работает замечательно и отсекает все ненужные нажатия Alt/Ctrl/Enter итп, однако есть интересная проблема — если мы водим мышкой во время ввода значения, то идет отлов событий mouseout/mousemove вместо keyup, у которых symKey уже равен undefined. Это связано как раз с задержкой в 1000 мс, которую установили.

Как разрешить эту проблему?

Пока что в голову приходит добавление в условие событий мыши и symKey === undefined, но это решение мне не нравится.

p.s. Ссылка на документацию по событиям в 2.3:
https://docs.sencha.com/extjs/2.3.0/...od-addListener
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск события при наведении Bezlepkin Общие вопросы Javascript 1 26.01.2011 21:25
Передача аргумента методу при назначении события eval Events/DOM/Window 9 11.11.2010 07:03
Запрет события при выполнения другова Suharik Events/DOM/Window 3 07.05.2010 16:29
SetTimeout не принимает параметр при повторном вызове 2dkott Общие вопросы Javascript 15 08.09.2009 16:37
Срабатывание события при подведении к краю экрана Destrifer Общие вопросы Javascript 2 08.01.2009 15:12