1

コントロールキーが押されているときにタブをキーダウンで動作させることができません。これどうやってするの。

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

1 に答える 1

0

ここに実用的なソリューションがあります。しかし、私があなただったら、CTRL + Tab をキャッチしません。CTRL+S などのほとんどのショートカットはキャッチでき、event.preventDefault() を呼び出してデフォルトの動作を防ぐことができます。たとえば、多くのブラウザーでは、これにより、Web ページを保存するためのダイアログ ボックスが表示されなくなります。しかし、CTRL+Tab ではキャッチされますが、event.preventDefault() は目的の効果がありません。Firefox では CTRL+Tab でタブが変更されます。以下のコードで両方の動作を確認できます。試乗できます

<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 バージョン、テストドライブです

<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>
于 2012-09-30T11:16:21.750 に答える