控制键关闭且按下选项卡时发生的事件

时间:2012-09-30 11:01:29

标签: jquery events keydown

当控制键关闭时,我无法使用tab来处理keydown。我怎么能这样做。

     $(document).keydown(function (e) {
        if (e.ctrlKey && e.which === 9){
            alert('tab pressed when controlkey is down');
        }
    });

1 个答案:

答案 0 :(得分:0)

这是一个有效的解决方案。但如果我是你,我不会抓住CTRL + Tab。可以捕获大多数快捷键如CTRL + S,然后您可以调用event.preventDefault()来防止默认行为。例如,在许多浏览器中,这将停止对话框以保存网页不显示。但是使用CTRL + Tab,它会被捕获,但是在Firefox CTRL + Tab更改选项卡中,event.preventDefault()没有达到预期的效果。您可以使用下面的代码查看两者。 You can take it for a test drive

<html><body>
<script>

function shortcutHandler(event) {
    if ((event.charCode == 115) && (event.ctrlKey)) {
        document.getElementById("debug").innerHTML += 'CTRL+S<br/>'
        event.preventDefault()
    }
    if ((event.keyCode == 9) && (event.ctrlKey)) {
        document.getElementById("debug").innerHTML += 'CTRL+Tab<br/>'
        event.preventDefault()
    }
}

document.addEventListener("keypress", shortcutHandler, true);
</script>
<div id=debug style="border: 1px solid red"></div>
</body></html>

这是一个jquery版本,test drive

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>

$(window).keypress(function(event){
    if ((event.charCode == 115) && (event.ctrlKey)) {
        document.getElementById("debug").innerHTML += 'CTRL+S<br/>'
        event.preventDefault()
    }
    if ((event.keyCode == 9) && (event.ctrlKey)) {
        document.getElementById("debug").innerHTML += 'CTRL+Tab<br/>'
        event.preventDefault()
    }
});

</script>
</head>
<body>
Press CTRL+S or CTRL+Tab
<div id=debug style="border: 1px solid red"></div>
</body></html>