仅在Firefox(JQuery)中的文本字段的开头和结尾触发按键事件

时间:2010-05-05 22:11:42

标签: javascript jquery firefox events

我正在使用委托来监听输入字段上的按键事件。出于某种原因,Firefox在字段开头时不会触发光标UP的委托事件,或者在结束时触发光标DOWN。 LEFT和RIGHT一直按预期工作。

直接将事件监听器绑定到该字段工作正常,因此必须与委托有关。有谁知道这是一个知道问题,我在谷歌/论坛等上找不到任何东西..?

$("div").delegate(":input", "keypress", function(e){
  // doesn't get triggered
});

$("div :input").bind("keypress", function(e){
  // gets triggered fine
});

这是一个演示问题的演示 - http://livsey.org/jquery.delegation.html

1 个答案:

答案 0 :(得分:0)

这些密钥在Firefox中不会出现气泡,至少在这种情况下不会出现,因此.delegate().live()将无效。这是一个已知问题,在这种情况下最好使用不同的事件,例如keydownkeyup,您可以看到jQuery documentation for .keypress()以便快速了解此事:

  

请注意,keydown和keyup提供一个代码,指示按下哪个键,而keypress指示输入了哪个字符。例如,小写的“a”将通过keydown和keyup报告为65,但按keypress报告为97。所有事件都将大写的“A”报告为65。由于这种区别,当捕获特殊键击如箭头键时,.keydown()或.keyup()是更好的选择。

将代码更新为:

$("div")().delegate(":input", "keyup", function(e){
  log("delegated: "+e.keyCode);
});

$("div :input").bind("keyup", function(e){
  log("bound: "+e.keyCode);
});