javascript - 跟踪当前按键的实际数量

标签 javascript jquery

这个帖子几乎解决了我的问题:Can jQuery .keypress() detect more than one key at the same time?

但是,通过提供的代码。如果您按 CTRL+C 复制一些文本,然后松开,数字将保持为“1”,直到您分别按下 CTRL 和 R。

代码:

var keys_count = 0;
var keys = {};

$(document).keydown(function (e) {
    if(keys[e.which]) return;

    keys_count = keys_count + 1;
    keys[e.which] = true;

    printKeys();
});

$(document).keyup(function (e) {
    keys_count = keys_count - 1;
    delete keys[e.which];

    printKeys();
});

function printKeys() {
    $('#out').html(keys_count);
}

在这里试试我的例子:http://jsfiddle.net/gFcuU/524/

有什么办法可以避免这种情况吗?

我只是想跟踪,当前用户是否只是简单地输入一些字母,或者执行一个命令,即 CTRL + C、CTRL + A 等。但也许有一个更简单的方法,我到目前为止找到了?

最佳答案

最简单的事情是测试 event.ctrlKey:

$(document).keydown(function (e) {
    if (e.ctrlKey) {
        $('#ctrl').text("true");
    } else {
        $('#ctrl').text("false");
    }
});

FIDDLE

您也可以将其与普通键的测试结合起来。例如:

if (e.ctrlKey && e.which == 67) {

jQuery Event Object API

关于javascript - 跟踪当前按键的实际数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19892164/

相关文章:

javascript - jQuery 检测内容何时加载

javascript - 将值从 ViewModel 传递到 JavaScript

javascript - 对于非 PHP 依赖项(如 jQuery、CSS 工具等),我应该使用还是避免使用 Composer?

JQuery - 通过 alt 或标题选择图像

javascript - 类型错误 : Illegal Invocation

Javascript:以秒为单位查找日期时间对象与当前时间之间的差异

javascript - for循环给多个变量赋值

javascript - React refs - 使用 refs 访问 DOM 节点

JavaScript 日期 UTC 日期时间-本地

javascript - 正则表达式允许字母和数字但不允许单独的数字