如何使用 JS 在不按任何键的情况下检测 CAPS LOCK STATUS 是否处于活动状态?

Use*_*Esp 5 javascript capslock

我想使用输入元素中的焦点事件来检测大写锁定是否处于活动状态,但没有任何按键,例如具有 IE 输入密码类型的行为。对于 IE,当您专注于这种输入密码时,如果用户具有活动大写锁定,即使用户没有按下我想要使用 JS 执行的任何键,也会出现警告工具提示。现在我的代码只处理按键事件

 $(function() {//check caps lock on 
                var isIE = !isIE && !!window.StyleMedia;
                if (isIE == true) {
                    document.msCapsLockWarningOff = true;
                }            
                    $('#Password').keypress(function (key) {
                        if (key.charCode >= 65 && key.charCode <= 90)
                            $('#capLockOn').tooltip('show');
                        else {
                            $('#capLockOn').tooltip('hide');
                        }
                        //Hide the tooltip when moving away from the password field
                        $('#Password').blur(function (e) {
                            $('#capLockOn').tooltip('hide');
                        });
                    });

            }); 
Run Code Online (Sandbox Code Playgroud)

我想添加警告,而无需浏览器的任何本机警告,以保持一致的设计 请提供任何建议...

ale*_*eas 5

您可以使用KeyboardEvent.getModifierState('CapsLock');。这将返回修饰键的当前状态(MDN 文档)。

$('#inputBox').addEventListener('focus', function(e) {
  e.getModifierState('CapsLock');
});
Run Code Online (Sandbox Code Playgroud)

当用户专注于您想要的任何内容时,这将为您提供 Caps Lock 修饰符的当前状态。

  • `getModifierState` 目前仅适用于 `KeyboardEvent` 和 `MouseEvent`,并且不适用于 `focus` (4认同)