JavaScript で Ctrl + Z キーの組み合わせをキャプチャする 質問する

JavaScript で Ctrl + Z キーの組み合わせをキャプチャする 質問する

次のコードを使用して、JavaScript でctrl+キーの組み合わせをキャプチャしようとしています:z

<html>
<head>
    <title>Untitled Document</title>
</head>
<body>

    <script type='text/javascript'>
        function KeyPress(e) {
            var evtobj = window.event? event : e


            //test1 if (evtobj.ctrlKey) alert("Ctrl");
            //test2 if (evtobj.keyCode == 122) alert("z");
            //test 1 & 2
            if (evtobj.keyCode == 122 && evtobj.ctrlKey) alert("Ctrl+z");
        }

        document.onkeypress = KeyPress;
    </script>

</body>
</html>

ctrlコメント行「test1」は、キーを押したまま他のキーを押すとアラートを生成します。

コメント行「test2」は、キーを押すとアラートを生成しますz

「テスト 1 と 2」の後の行に従ってこれらを組み合わせると、ctrlキーを押したままキーを押しても、z期待どおりにアラートは生成されません。

コードの何が問題なのでしょうか?

ベストアンサー1

  1. onkeydown(またはonkeyup)を使用するか、使用しないかonkeypress
  2. keyCode122ではなく90を使用してください
function KeyPress(e) {
      var evtobj = window.event? event : e
      if (evtobj.keyCode == 90 && evtobj.ctrlKey) alert("Ctrl+z");
}

document.onkeydown = KeyPress;

オンラインデモ:http://jsfiddle.net/29sVC/

明確にするために、キーコードは文字コードと同じではありません。

文字コードはテキスト用です (エンコードによって異なりますが、多くの場合 0 ~ 127 は ASCII コードのままです)。キー コードはキーボードのキーにマップされます。たとえば、Unicode 文字 0x22909 は「好」を意味します。実際にこのキーを持つキーボードは (あったとしても) あまり多くありません。

OS は、ユーザーが設定した入力方法を使用して、キーストロークを文字コードに変換します。結果は、keypress イベントに送信されます。(一方、keydown と keyup は、テキストの入力ではなく、ユーザーがボタンを押したことに応答します。)

おすすめ記事