这个帖子几乎解决了我的问题: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等等。但也许有一种更简单的方法,到目前为止我找到了?
答案 0 :(得分:2)
最简单的方法是测试event.ctrlKey
:
$(document).keydown(function (e) {
if (e.ctrlKey) {
$('#ctrl').text("true");
} else {
$('#ctrl').text("false");
}
});
您也可以将它与普通键的测试结合起来。 E.g:
if (e.ctrlKey && e.which == 67) {
答案 1 :(得分:1)
事件处理程序包含一些数据e,它告诉您是否存在可能有用的某些组合键。 e.shiftKey和e.ctrlKey是布尔值,告诉你按下它们时是否按下了这些键。
请记住,在允许这种操作时你可能想要e.preventDefault(),以便用户可以按ctrl + a而不选择页面上的所有内容。