コントロールキーが押されているときにタブをキーダウンで動作させることができません。これどうやってするの。
$(document).keydown(function (e) {
if (e.ctrlKey && e.which === 9){
alert('tab pressed when controlkey is down');
}
});
ここに実用的なソリューションがあります。しかし、私があなただったら、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>