我对 Firefox 的keydown行为感到不满,因为在没有关注特定字段的情况下按下 enter 键(实际上是任何键)不会触发keydown事件,它只会触发keypress事件。
这可能会非常令人困惑,因为keydown和keyup事件使用 JavaScript 键码,而keypress使用 ASCII 码。幸运的是,13(进入/返回)对两者都是通用的。
FF在这种情况下使用按键是否有任何已知原因?有什么好处?
一旦确定了这一点,IE8 就会抛出一个愚蠢的问题,因为它不允许preventDefault要求,而是returnValue = false
来自另一篇 SO 帖子的以下片段被证明非常有用:
event.preventDefault ? event.preventDefault() : event.returnValue = false;
在寻找解决这些问题的过程中,我一直event.keycode
对 vs感到困惑event.which
。也就是说,我使用类似于以下的 switch 语句做错了:
$("#class_Name").bind("keydown", function(event){
// do not test input if field controls used
switch(event.which){
case 13:
//enter key
event.preventDefault ? event.preventDefault() : event.returnValue = false;
break;
}
以下是更好的,如果是这样,为什么?
$("body").keypress(function(event){
// stop inadvertant form submission
if (event.keycode == "13"){
event.preventDefault ? event.preventDefault() : event.returnValue = false;
}
});
我只是想知道,以便我知道哪个最适合申请。
非常感谢。