不同浏览器中的按键代码? jQuery

问题描述 投票:0回答:2

我所发现的是,不同的网络浏览器在关键代码方面存在不一致。

我有以下代码,在 Safari、Opera 和 Chrome 中按 Enter 时可以正常运行,但在 Firefox 中则不行。

我使用的是 Firefox 9.0.1。

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

1)

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

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

我仅使用 e.which 进行了更多测试,并注意到当我省略 &&

!event.shiftKey
时它可以工作 - 显然 Firefox 不知道该命令。还有其他选择吗?我希望用户能够在不提交帖子的情况下点击 Shift + Enter。我已经尝试过这种情况
if (e.which==13 && e.which!=16)
,但没有效果。

解决方案

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

jquery html firefox keycode
2个回答
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
投票

您不需要同时执行

keyCode
which
,只需使用
which
即可在所有浏览器中正常使用:)

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

© www.soinside.com 2019 - 2024. All rights reserved.