首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >event.keycode vs event.which

event.keycode vs event.which
EN

Stack Overflow用户
提问于 2012-08-29 15:15:20
回答 2查看 15.2K关注 0票数 19

我不喜欢Firefox的按键行为,因为在不关注特定字段的情况下按Enter键(实际上是任何键)都不会触发按键事件,它只会触发按键事件。

这可能非常混乱,因为keydown和keyup事件使用JavaScript键代码,而keypress使用ASCII码。幸运的是,13 (enter/return)对两者都是通用的。

在这种情况下FF使用按键有什么已知的原因吗?好处是什么?

一旦建立了这一点,IE8就抛出了一个愚蠢的建议,因为它不允许preventDefault要求另一个人的returnValue = false,所以post被证明是非常有用的:

代码语言:javascript
运行
复制
event.preventDefault ? event.preventDefault() : event.returnValue = false;

在寻找解决这些问题的过程中,我一直对event.keycodeevent.which感到困惑。也就是说,我是否使用了类似于以下内容的switch语句:

代码语言:javascript
运行
复制
$("#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;
     }

下面的是不是更好,如果是的话,为什么?

代码语言:javascript
运行
复制
$("body").keypress(function(event){
     // stop inadvertant form submission
     if (event.keycode == "13"){
       event.preventDefault ? event.preventDefault() : event.returnValue = false;
     }
});

我只是想知道,这样我就知道哪一个是最好的申请。

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-29 15:20:09

一些浏览器使用keyCode,另一些浏览器使用which。但对于jQuery,这是标准化的,所以您不必考虑这一点。你可以选择你喜欢的那一个。

票数 10
EN

Stack Overflow用户

发布于 2014-02-11 20:13:33

根据this comment的说法,jQuery可能是不可靠的,this page说:

event.whichkeydownkeyup上的IE<9中未定义。

对于返回字符的键,在keypress上的Gecko (Seamonkey,Firefox)中,event.keyCode为0。

event.charCode仅在Internet Explorer (Mac)的keydown和keyup上支持。

Try it on JSFiddle

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12172646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档