Javascript / jQuery:将关键组合转换为字符串?

时间:2011-12-09 05:02:53

标签: javascript jquery keypress

我正在寻找一个现有的Javascript库,甚至更好的是一个jQuery插件,它检测一个键组合并输出相应的字符串(例如,“ctrl + shift + f”)。这是为了允许用户为Google Chrome插件配置关键组合。 BetterTouchTool(http://www.boastr.de/)的首选项行为就是我所说的一个很好的例子。有没有人遇到这样的事情?

3 个答案:

答案 0 :(得分:0)

我认为这种事情可能会有所帮助:

document.onkeydown = KeyDownHandler;
document.onkeyup = KeyUpHandler;
var CTRL = false;      
var SHIFT = false;     
var ALT = false;
var CHAR_CODE = -1;

function KeyDownHandler(e) {
    var x = '';
    if (document.all) {
        var evnt = window.event;
        x = evnt.keyCode;
    }
    else {
        x = e.keyCode;
    }
    DetectKeys(x, true);
    DoSometing();
}

function KeyUpHandler(e) {
    var x = '';
    if (document.all) {
        var evnt = window.event;
        x = evnt.keyCode;
    }
    else {
        x = e.keyCode;
    }
    DetectKeys(x, false);
    DoSometing();

}
function DetectKeys(KeyCode, IsKeyDown) {
    if (KeyCode == '16') {
        SHIFT = IsKeyDown;
    }
    else if (KeyCode == '17') {
        CTRL = IsKeyDown;
    }
    else if (KeyCode == '18') {
        ALT = IsKeyDown;
    }
    else {
        if(IsKeyDown)
            CHAR_CODE = KeyCode;
        else
            CHAR_CODE = -1;
    }
}

function DoSometing() {
    //check for keys here
}

我希望它会有用

答案 1 :(得分:0)

$(document).keypress(function(e) {
    alert(
        (e.ctrlKey ? 'ctrl+' : '') +
        (e.altKey ? 'alt+' : '') +
        (e.shiftKey ? 'shift+' : '') +
        String.fromCharCode(e.which).toLowerCase()
    );
});

这将注册密钥;不知道如何阻止ctrl / alt键被解释。

浏览器支持:http://www.quirksmode.org/js/keys.html

答案 2 :(得分:0)

我忘记了我甚至问过这个问题!好几个月之后,我自己写了一个插件,确实这样做了=)

http://suan.github.com/jquery-keycombinator/