Как захватить ключевое событие из представления?

Я пытаюсь захватить ключевое событие из представления следующим образом:

myView = Backbone.View.extend({

  el: $('#someDiv'),
  initialize: function(){
    // initialize some subviews
  },
  render: function(){
    return this;
  },
  events:{
   'keypress #someDiv': 'showKey'
  },
  showKey: function(e){
    console.log(e.keyCode);
  }
})

Это не работает?

ps: Нет элементов [input] в представлении или в его subviews. Мне просто нужно знать, нажимает ли пользователь какой-либо ключ, а затем что-то делать в представлении.

Ответ 1

При нажатии клавиши происходит сфокусированный элемент на странице. Если у вас нет ничего в вашем представлении, и представление не имеет никакого фокуса, тогда у вас не будет никаких событий нажатия клавиш.

(btw, если вы хотите сделать ключевое событие для этого события this.el, сделайте "keypress": "showKey" )

В приведенном выше коде тело, скорее всего, получит все события нажатия клавиш.

Ответ 2

Вы можете сделать это в функции initialize():

_.bindAll(this, 'on_keypress');
$(document).bind('keypress', this.on_keypress);