不同浏览器中的密钥代码? jQuery的

时间:2012-05-03 21:36:17

标签: jquery html firefox keycode

我发现的所有内容都是关键代码在不同的网络浏览器中存在不一致。

我有以下代码在Safari,Opera和Chrome中输入时运行正常,但在Firefox中没有。

我使用FF 9.0.1

以下是出现问题的两个代码段:

1)

//Post something
$('#postDiv').on('keydown', '#posttext', function(e) {
    if ((e.keyCode == 13 || e.which == 13) && !event.shiftKey) {
        post($(this));
    }
});

2)

//Comment on a post
$('.commenttext').live('keydown', function(e) {
    if ((e.keyCode == 13 || e.which == 13) && !event.shiftKey) {
        comment($(this));
    }
});

甚至都没有调用这两个函数。

提前谢谢:-) 丹尼斯

编辑1

我只用e.which进行了一些测试,发现当我省去&&& !event.shiftKey - 显然FF不知道那个命令。还有其他选择吗?我希望用户能够在不提交帖子的情况下点击shift + enter。我已经尝试了这个条件,如果(e.which == 13&& e.which!= 16)但无济于事。

编辑2 - 解决方案

首先感谢所有答案!当然它必须是e.shiftKey,而不是event.shiftKey!现在它适用于所有浏览器(我还没有尝试过的唯一一个IE浏览器)。

2 个答案:

答案 0 :(得分:4)

来自http://api.jquery.com/event.which/

  

event.which属性规范化event.keyCode和event.charCode。   建议观看event.which键盘输入键。

你不应该使用e.keyCode,你可能会遇到e.which!= 13但e.keyCode的问题。从控制结构中删除e.keyCode评估后,您是否已确认问题仍在继续?

答案 1 :(得分:1)

您不需要同时使用keyCodewhich,只需使用which即可在所有浏览器中使用它们。)

http://api.jquery.com/event.which/