【问题标题】:CTRL keyCode (17) not working in JavaScript?CTRL keyCode (17) 在 JavaScript 中不起作用?
【发布时间】:2015-11-19 08:34:52
【问题描述】:

我有以下代码将 eventListener 添加到 HTML 文本区域。它应该控制台记录被按下的键码,如果 keyCode 是 == 到 17 (CTRL),则控制台记录“你按下了 CTRL。”。出于某种原因,当我在文本区域中按下 CTRL 时,它不是控制台记录按下的 keyCode,也不是“你按下了 CTRL”。例如,如果我按“A”,控制台日志返回“97”,这是正确的。它也适用于所有其他字母。

代码如下:

document.getElementById("msgBox").addEventListener("keypress",function(e){
    console.log(e.keyCode);
    if(e.keyCode == 17){
        console.log("You pressed CTRL.");
    }
});

我做错了什么?

更新:它也不适用于其他特殊键,如“shift、Fx、alt、home 等。

文本区域的 HTML:

<textarea id="msgBox" placeholder="Enter your message" autofocus></textarea>

【问题讨论】:

  • 能否也显示输入字段的HTML代码?
  • 现在添加。 @danielaKay
  • 我刚刚在 Firefox 和 Chrome 中尝试了你的 jsfiddle,但它们都不起作用。 ??
  • 是的,对不起。我只测试了字母,并且 that 与e.which 一起使用:-/ ctrl 键仍然不起作用。我的错。
  • 是的,信件确实有效,我在帖子中说过:P。此外,它不适用于其他特殊键,而不仅仅是 ctrl。

标签: javascript keyboard dom-events addeventlistener keycode


【解决方案1】:

试试这个:(e.which == 17)

【讨论】:

  • 哦,您可能必须将此作为 if 语句的第一行,以防止默认处理程序处理它:e.preventDefault();
  • 我忘记了,但这也行不通。此外,这会阻止用户在框中输入内容。
  • 酷!这让我在谷歌上搜索了关键事件的复杂性,而且......好吧,我会在我的铺位上。
  • ctrl 键似乎不起作用:jsfiddle
  • 有趣,我似乎根本无法控制按键,但它适用于 keydown 事件。
【解决方案2】:

检查e.ctrlKey。

请参阅 https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/ctrlKey 上的 MDN 文档

如果您想要一种简单的方法来管理按键,您可以使用像 https://dmauro.github.io/Keypress/ 这样的专用库

【讨论】:

  • @aCodingN00b 请发布其余代码,以便我们检查您的 HTML 是否正确。
  • 已在帖子中添加。
【解决方案3】:

由于某种原因,特殊键不适用于 keypress 事件,但它们适用于 keydown 事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2022-06-30
    • 2018-05-19
    • 2015-06-25
    相关资源
    最近更新 更多