как захватить ключевое событие из вида? - PullRequest
11 голосов
/ 17 мая 2011

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

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] в представлении или его подпредставлениях. Мне просто нужно знать, нажимает ли пользователь какую-либо клавишу, а затем что-то делать в представлении.

Ответы [ 2 ]

14 голосов
/ 29 июня 2011

Вы можете сделать это в представлении initialize ():

_.bindAll(this, 'on_keypress');
$(document).bind('keypress', this.on_keypress);
4 голосов
/ 17 мая 2011

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

(кстати, если вы хотите сделать событие нажатия клавиши для this.el, do "нажатие клавиши":" showKey ")

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

...