Jquery捕获选项卡+一些组合键

Jquery capture tab + some key combination

本文关键字:组合 选项 Jquery      更新时间:2023-09-26

例如,如何捕获带有jQuery的tab+t组合?我发现了很多关于altshiftctrl的例子,因为事件对象包含特殊的标志,以便了解(例如)是否按下了alt。但选项卡没有这样的东西。

这应该可以工作。这有点复杂,可能有一种更简单的方法,但效果很好。

JSFiddle:https://jsfiddle.net/spybhhxc/

var tabdown = false;
var tdown = false;
$(document).keydown(function(e) {
    if(e.which == 9) {
        tabdown = true;
    }
    if(e.which === 84)
    {
        tdown = true;
    }
    if(tabdown && tdown)
    {
        //do your thing
    }
});
$(document).keyup(function(e) {
    if(e.which == 9) {
        tabdown = false;
    }
    if(e.which === 84)
    {
        tdown = false;
    }
});

不过,这会带来一个问题,因为一旦按下tab键,文档就会在tab键导航到浏览器中的元素时失去焦点。你最好使用altctrl这样不与浏览器交互的东西。

我们可以让一个tab键按下[tabPressed]变量在按下键时设置为true,在按下键事件时取消设置。我们将使用tab键按下[tabPressed]变量来检查它在其他按键活动中是否处于按下状态。制表键代码为9。

jsfiddle链接http://jsfiddle.net/e3Lveyj2/

 var tabPressed=false;
 function handleKeyDown(e) {
 var evt = (e==null ? event:e);
 if(evt.keyCode == 9){
    tabPressed=true;
}
 if ((tabPressed) && (evt.keyCode == 84))  { 
    alert ("You pressed 'Tab+t'")
}
}

function handleKeyUp(e) {
 var evt = (e==null ? event:e);
 if(evt.keyCode == 9){
    tabPressed=false;
}
}
document.onkeydown = handleKeyDown;
document.onkeyup = handleKeyUp;