【问题标题】:key codes in different browsers? jquery不同浏览器中的关键代码? jQuery
【发布时间】:2012-05-03 21:36:16
【问题描述】:

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

我的以下代码在 Safari、Opera 和 Chrome 中按 Enter 时运行良好,但在 Firefox 中却没有。

我使用的是 FF 9.0.1

这里是出现问题的两个代码sn-ps:

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。我已经尝试过 if (e.which==13 && e.which!=16) 的条件,但无济于事。

编辑 2 - 解决方案

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

【问题讨论】:

  • 只需使用event.which 即可获得跨浏览器的一致结果。 developer.mozilla.org/en/DOM/event.charCode#Notes
  • 如果这个问题已经在你的其他问题中得到解决,你为什么要提出这个问题? (仅使用e.which,jQuery 对其进行规范化。)
  • 尝试在文档上绑定 keydown,然后用 $(this).attr('id') 标识元素。也许这有点帮助?​​
  • 谢谢!我只使用 e.which 进行了更多测试,并注意到当我省略 && !event.shiftKey 时它可以工作 - 显然 FF 不知道该命令。有没有其他选择?我希望用户能够在不提交帖子的情况下按 shift+enter。我已经尝试过 if (e.which==13 && e.which!=16) 的条件,但无济于事。
  • 谢谢,找到解决方案,查看问题编辑

标签: jquery html firefox keycode


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢!我只用 e.which 进行了更多测试,并注意到当我省略 && !event.shiftKey 时它可以工作 - 显然 FF 不知道该命令。有没有其他选择?我希望用户能够在不提交帖子的情况下按 shift+enter。我已经尝试了条件 if (e.which==13 && e.which!=16) 但无济于事。
  • 根据https://developer.mozilla.org/en/DOM/event.shiftKey,在 Mozilla 中 event.shiftKey 应该返回一个布尔值。您是否尝试过使用 console.log(e.shiftKey) 来验证每个浏览器中返回的内容?
【解决方案2】:

您不需要同时使用keyCodewhich,只需使用which,在所有浏览器中都可以:)

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

【讨论】:

  • +1 为此。我每天都可以在 SO 上学到一些不同的东西!
  • @lukas.pukenis 我也是!每天都是上学日;)呵呵
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
  • 1970-01-01
相关资源
最近更新 更多