跟踪当前密钥的实际数量

时间:2013-11-10 16:34:08

标签: 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等等。但也许有一种更简单的方法,到目前为止我找到了?

2 个答案:

答案 0 :(得分:2)

最简单的方法是测试event.ctrlKey

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

FIDDLE

您也可以将它与普通键的测试结合起来。 E.g:

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

jQuery Event Object API

答案 1 :(得分:1)

事件处理程序包含一些数据e,它告诉您是否存在可能有用的某些组合键。 e.shiftKey和e.ctrlKey是布尔值,告诉你按下它们时是否按下了这些键。

请记住,在允许这种操作时你可能想要e.preventDefault(),以便用户可以按ctrl + a而不选择页面上的所有内容。