jQuery热键......不那么全球化

Chr*_*ian 9 jquery events dom hotkeys codemirror

基本上,我正在使用Resig先生的jQuery Hotkeys插件来捕获和处理类似的快捷方式ctrl+o......

好吧,也许我不uderstand的概念,但我的印象是一个ctrl+o触发任何地方里面的文件将通过文件热键处理程序被捕获.

例如,以下代码一般工作...

jQuery(document).bind('keydown', 'ctrl+o', fn);
Run Code Online (Sandbox Code Playgroud)

但是,如果用户在输入框内部触发热键,则会失败.

它只适用于我执行以下操作:

jQuery('body, input').bind('keydown', 'ctrl+o', fn);
Run Code Online (Sandbox Code Playgroud)

这对我的健康非常不利,因为它涉及每次在DOM中添加新输入框时绑定该死的处理程序.更糟糕的是,在CodeMirror等复杂小部件的情况下,我不知道要绑定什么.

Dunno,如果我的问题有道理,也许我使用了错误的方法?我也试着结合下面的对象,但它没有工作:window,document,body,div[contains the whole page]

NB:你可以在这里试一试.

Jam*_*gne 6

这实际上是插件的预期功能:

// Don't fire in text-accepting inputs that we didn't directly bind to
if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
    event.target.type === "text") ) {
    return;
}
Run Code Online (Sandbox Code Playgroud)

  • **我很高兴地宣布这也解决了CodeMirror的问题.** (2认同)