JavaScript:检查是否按下了CTRL按钮

use*_*457 50 javascript

CTRL当我使用JavaScript点击我的html页面上的控件时,我需要检查按钮是否被按下.

我怎样才能做到这一点?

Cha*_* Ma 99

尝试查看事件对象.

例如

document.body.onclick = function (e) {
   if (e.ctrlKey) {
      alert("ctr key was pressed during the click");
   }
}
Run Code Online (Sandbox Code Playgroud)
<p>Click me, and sometimes hold CTRL down!</p>
Run Code Online (Sandbox Code Playgroud)

  • +1是真实代码的唯一答案而不是干"看这里". (10认同)
  • 如果您需要检测 Mac OS X 的命令键,请检查事件对象 ```e.metaKey``` 的 ```metaKey``` 属性 (4认同)
  • 仅供参考,当您在带有“ctrl-click = right click”的 mac 上使用它时,您仍然会看到浏览器菜单打开的行为。 (2认同)

Aru*_*E S 8

检查是否按下了 CTRL 按钮。我用这个并且效果很好。

<a  href="" onclick="return Details(event)" ></a>

function Details(event) {
            if (event.ctrlKey) {
                alert('Ctrl down');
            }
}
Run Code Online (Sandbox Code Playgroud)

  • 这是对已接受答案的有用补充,因为它是从 html 添加事件处理程序,而不是从 javascript 中添加。 (2认同)

Sac*_*San 6

我使用 cntrlIsPressed 全局标志来做到这一点;还可以使用 Control + A 选择所有选项

// Check whether control button is pressed
$(document).keydown(function(event) {
    if (event.which == "17")
        cntrlIsPressed = true;
    else if (event.which == 65 && cntrlIsPressed) {
        // Cntrl+  A
        selectAllRows();
    }
});

$(document).keyup(function() {
    cntrlIsPressed = false;
});

var cntrlIsPressed = false;
Run Code Online (Sandbox Code Playgroud)

  • @MikaelDúiBolinder:[MDN](https://developer.mozilla.org/en-US/docs/Web/API/Window/event) 建议 **反对** 使用 `window.event`。 (3认同)
  • @Sacky:在 keyup 上设置 `cntrlIsPressed = false;` 的逻辑是不正确的,因为用户可能按 Ctrl+whatever,然后释放任何键(这将生成 `keyup`),并且 Ctrl 仍然处于按下状态。另外,jQuery 在这里显得有些过分了。 (3认同)
  • 对于那些想要检查 CTRL 是否在按键事件处理程序之外按下的人来说,这是一个很好的解决方案。 (2认同)
  • 可以使用“window.event.ctrlKey”来代替它。 (2认同)