我正在尝试在JavaScript中检测多个关键组合。我需要检测Ctrl+左箭头、Ctrl+右箭头、右箭头和左箭头。目前,我只是尝试检测何时按下了Ctrl。以下是我的代码(JSFiddle链接):
我想我并不真正理解JQuery的
编辑:更改if语句以评估
var keys = {};
$(document).keydown(function (e) {
keys[e.which] = true;
printKeys();
});
$(document).keyup(function (e) {
delete keys[e.which];
printKeys();
});
function printKeys() {
var html = '';
for (var i in keys) {
html += '<p>i: ' + i + '</p>'
if (!keys.hasOwnProperty(i)) continue;
if ($.inArray(17, keys) > -1)
html += '<p>ctrl was pressed, return val: ' + $.inArray(17, keys) + '</p>'
}
$('#out').html(html);
}
我想我并不真正理解JQuery的
inArray
应该如何工作,因为当我按下任意键时,它只返回-1。if语句也计算为true,而我只希望在按下Ctrl时才会这样做。我该如何修复这个问题,使我的if语句正确检测到Ctrl键被按下?一旦我解决了这个问题,我就能够弄清楚剩下的部分了。编辑:更改if语句以评估
inArray
返回的> -1
。
$.inArray
<-- 如果你不理解它的工作原理,这可能是一个很好的起点 :) - Andrew Whitakerif ($.inArray(17, keys) > -1)
,但是尽管html += '<p>i: ' + i + '</p>'
输出了17,它仍然没有检测到17在数组中。 - tnw