3 回答
TA贡献1890条经验 获得超9个赞
这取决于。对于“正常”的钥匙,这意味着非Shift,Ctrl,ALT,( CMD),答案是否定的,该事件处理程序将赶上/火在队列中,一个接一个。
对于我上面提到的修饰键,事件对象上有一个属性。
例:
$(document).bind('keypress', function(event) {
if( event.which === 65 && event.shiftKey ) {
alert('you pressed SHIFT+A');
}
});
其他属性是:
event.ctrlKey
event.altKey
event.metaKey
TA贡献1906条经验 获得超10个赞
如果您只想在连续按下多个键时触发处理程序,请尝试以下操作:
jQuery.multipress = function (keys, handler) {
'use strict';
if (keys.length === 0) {
return;
}
var down = {};
jQuery(document).keydown(function (event) {
down[event.keyCode] = true;
}).keyup(function (event) {
// Copy keys array, build array of pressed keys
var remaining = keys.slice(0),
pressed = Object.keys(down).map(function (num) { return parseInt(num, 10); }),
indexOfKey;
// Remove pressedKeys from remainingKeys
jQuery.each(pressed, function (i, key) {
if (down[key] === true) {
down[key] = false;
indexOfKey = remaining.indexOf(key);
if (indexOfKey > -1) {
remaining.splice(indexOfKey, 1);
}
}
});
// If we hit all the keys, fire off handler
if (remaining.length === 0) {
handler(event);
}
});
};
例如,要在圣火上
jQuery.multipress([83, 84], function () { alert('You pressed s-t'); })
添加回答
举报