jQuery .keypress()可以同时检测多个键吗?

jQuery是否有办法检测到同时按下了多个键?


是否有其他选择可以同时按下两个键?


蛊毒传说
浏览 752回答 3
3回答

当年话下

这取决于。对于“正常”的钥匙,这意味着非Shift,Ctrl,ALT,( CMD),答案是否定的,该事件处理程序将赶上/火在队列中,一个接一个。对于我上面提到的修饰键,事件对象上有一个属性。例:$(document).bind('keypress', function(event) {    if( event.which === 65 && event.shiftKey ) {        alert('you pressed SHIFT+A');    }});其他属性是:event.ctrlKeyevent.altKeyevent.metaKey

隔江千里

如果您只想在连续按下多个键时触发处理程序,请尝试以下操作: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'); })
打开App,查看更多内容
随时随地看视频慕课网APP