如何从视图中捕获关键事件?

时间:2011-05-17 15:13:21

标签: javascript javascript-events backbone.js

我正在尝试从视图中捕获关键事件,如下所示:

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 个答案:

答案 0 :(得分:14)

您可以在view initialize()函数中执行此操作:

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

答案 1 :(得分:4)

按下键进入页面上的焦点元素。如果您的视图中没有任何内容且视图没有任何焦点,那么您将不会有任何按键事件。

(顺便说一句,如果你想为this.el做按键事件,请执行“keypress”:“showKey”)

在上面的代码中,正文很可能会收到所有按键事件。