如何在JavaScript中检测CapsLock和其他非字母数字特殊修饰键?

问题描述 投票:1回答:1

不使用altKeyshiftKeyctrlKey,是否可以检测到包括CapsLockTabSpace的它们?

javascript dom-events keyboard-events capslock
1个回答
1
投票

这是一种有趣的方式,您可以找出在JavaScript中按下了哪个键。这非常有帮助

  • 根据所按下的键触发动作。
  • [通过创建缩进而不是切换焦点来防止Tab播放扰人
  • 要查明Caps Lock是否打开。特别是在填写表单字段时,可以通知用户。
  • 使用箭头键进行导航等。

这是JavaScript代码:-

    window.addEventListener("keypress", function(e){
         console.log(e.keyCode);
    });

    window.addEventListener("keydown", function(e){
         if(e.keyCode==9)       
         {   
              console.log("You Pressed Tab");
              e.preventDefault();
         }
    });

    window.addEventListener("keyup", function(e){
        var keyPressed; 
        switch(e.keyCode)
        {
            case 9: return;   // already handled above
            case 18: keyPressed="Alt"; e.preventDefault(); break;
            case 20: keyPressed="Caps Lock"; break;
            case 17: keyPressed="Ctrl"; break;
            case 16: keyPressed="Shift"; break;
            case 37: keyPressed="Left A"; break;
            case 38: keyPressed="Top A"; break;
            case 39: keyPressed="Right A"; break;
            case 40: keyPressed="Bottom A"; break;
            default: keyPressed=e.keyCode;
        }
        console.log("You pressed "+keyPressed);
    });

switch case构造不在keydown处理程序中的原因是因为我个人不喜欢按住该键时多次执行该处理程序。当然,可以在switch情况下添加更多键。另请注意,Tabkeydown下。这是因为按下键时会触发Tab。如果将其放置在keyup下,则不会触发keypress处理程序,从而更改窗口焦点并使keyup处理程序无效。 preventDefault()防止TabAlt改变焦点。该代码只是一个示例,请根据需要进行更改。

© www.soinside.com 2019 - 2024. All rights reserved.