2016-03-14 4 views
0

Я пытаюсь запустить следующий обработчик событий, указанный ниже; это была изначально функция keydown, но мне нужно настроить keypress вместо этого. Может кто-нибудь объяснить, что я делаю неправильно здесь?Как я могу сделать следующий обработчик события .keypress?

$(document).on('keypress', function(event) { 
     if (event.shiftKey) { 
      if (event.which === 37) { 
       currentPosition = (currentPosition>0) ? parseInt(currentPosition)-1 : maxFocusablePosition; 
       console.log(' shift + left'); 

       focusPosition(currentPosition); 
       } 

      else if (event.which === 39) { 
       currentPosition = (currentPosition<maxFocusablePosition) ? parseInt(currentPosition)+1 : 0; 
       console.log('shift + right'); 

       focusPosition(currentPosition); 
       } 

     } 
    }); 

ответ

1

keypress событие инициируется, когда печатный символ генерируется. Поскольку ваш код ищет клавишу Shift и клавишу со стрелкой (обе клавиши, которые не создают печатаемый символ), вы не будете ударять ни одной из ветвей своего оператора if.

Вам необходимо использовать keyup или keydown.

+0

Интересно. Невозможно использовать keypress для этих непечатаемых символов? –

+0

Непечатаемые символы не генерируют это событие. Вы можете использовать обработчик событий «keydown» для их ловушки, а затем запускать событие «keypress» вручную, если они были нажаты (не уверен, зачем вам это нужно), но 'keypress' относится к произведению персонажа, а не к фактический ключ, который был поражен - вот что такое 'keyup' и' keydown'. –

Смежные вопросы