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

Run*_*tle 11 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);
  }
})
Run Code Online (Sandbox Code Playgroud)

这不起作用?

ps:视图或其子视图中没有[input]元素.我只需要知道用户是否按下了任何键,然后在视图上执行某些操作.

Dan*_*gea 14

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

_.bindAll(this, 'on_keypress');
$(document).bind('keypress', this.on_keypress);
Run Code Online (Sandbox Code Playgroud)

  • 将按键绑定到文档时要小心,当您删除视图时,它不会与其余事件解除绑定.删除视图时,还要调用:$(document).unbind('keypress','on_keypress'); (14认同)

Jul*_*ien 4

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

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

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