【问题标题】:event when controlkey is down and tab is pressed按下 controlkey 并按下选项卡时的事件
【发布时间】:2012-09-30 11:01:29
【问题描述】:

当控制键按下时,我无法让选项卡在 keydown 上工作。我该怎么做。

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

【问题讨论】:

  • 你想阻止 ctrl + tab 吗?
  • 你试过event.preventDefault();吗?我现在无法测试任何东西,因为我在 iPad 上,但这通常在我处理按键时会有所帮助。

标签: jquery events keydown


【解决方案1】:

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

【讨论】:

  • 我试过你上面的链接。这个对我有用。您使用的是什么浏览器和操作系统。我添加了一个 jquery 版本,你可以检查一下吗
  • 你说得对,它在 Chrome 中不起作用。我做了一些研究检查github.com/jeresig/jquery.hotkeysstackoverflow.com/questions/11000826/…
  • 是的,此代码适用于 control+S $(document).bind('keydown', function (e) { if (e.ctrlKey && (e.which == 83)) { e. preventDefault(); alert('Ctrl+S'); return false; } });但不适用于带有键码 9 的 control+tab
猜你喜欢
  • 2019-06-07
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
相关资源
最近更新 更多