你如何判断大写锁定是否在使用JavaScript?

2022-08-30 00:26:02

你如何判断大写锁定是否在使用JavaScript?

但有一点需要注意:我做了谷歌搜索,我能找到的最好的解决方案是将事件附加到每个输入,然后每次检查按下的字母是否大写,如果是,然后检查Shift是否也被按住。如果不是,则必须打开大写锁定。这感觉真的很脏,只是...浪费 - 肯定有比这更好的方法吗?onkeypress


答案 1

在jQuery中,

$('#example').keypress(function(e) { 
    var s = String.fromCharCode( e.which );
    if ( s.toUpperCase() === s && s.toLowerCase() !== s && !e.shiftKey ) {
        alert('caps is on');
    }
});

避免错误,如退格键,是必需的。s.toLowerCase() !== s


答案 2

您可以使用 来检测许多键,包括最新浏览器上的大写锁定。KeyboardEvent

getModifierState 函数将提供以下各项的状态:

  • 替代项
  • AltGraph
  • 大写锁定
  • 控制
  • Fn (Android)
  • 数字锁定
  • OS (Windows & Linux)
  • 滚动锁
  • 转变

此演示适用于所有主流浏览器,包括移动(caniuse)。

passwordField.addEventListener( 'keydown', function( event ) {
  var caps = event.getModifierState && event.getModifierState( 'CapsLock' );
  console.log( caps ); // true when you press the keyboard CapsLock key
});