输入密码时判断是否开启大写锁定
前言
任何人在任何时候都有可能悄无声息的把大写锁定打开。在大部分输入时,用户可以轻易地发现输入的是大写。但,在输入密码时,用户就不容易发现了。为了更好的用户体验,我们可以在用户输入密码时提示大写锁定已开启。你也一定见过这种场景吧。
提示用户大写锁定已开启
1const inputElement = document.querySelector('#your-input-element');
2
3inputElement.addEventListener('keydown', function(event) {
4 if (event.getModifierState('CapsLock')) {
5 console.log('大写锁定是打开的');
6 } else {
7 console.log('大写锁定是关闭的');
8 }
9});
10
上面的代码是在监听用户在输入框输入时判断的,当然也可以在按下任何键的时候判断。
getModifierState
1getModifierState(key)
2
KeyboardEvent.getModifierState() 方法返回指定修饰键的当前状态:如果修饰键处于活动状态(即修饰键被按下或锁定),则返回 true ,否则返回 false。
参数key还可以是Alt、NumLock等。对修饰符及不同平台的支持可见此链接。
使用场景
检测快捷键组合
检查多个修饰键是否同时被按下。
1document.addEventListener('keydown', function(event) {
2 if (event.getModifierState('Control') && event.getModifierState('Alt') && event.key === 'S') {
3 // 执行Ctrl+Alt+S的快捷操作
4 }
5});
6
优化输入体验
1document.addEventListener('input', function(event) {
2 if (event.getModifierState('NumLock') && event.target.type === 'number') {
3 // 提示用户NumLock可能影响输入
4 }
5});
6
创建自定义键盘快捷操作
1document.addEventListener('keydown', function(event) {
2 if (event.getModifierState('Shift') && event.getModifierState('Alt') && event.key === 'Z') {
3 // 执行自定义操作
4 }
5});
6
仅能使用getModifierState的场景
检测大写锁定
1document.addEventListener('keydown', function(event) {
2 if (event.getModifierState('CapsLock')) {
3 console.log('Caps Lock is active');
4 }
5});
6
检测数字锁定
1document.addEventListener('keydown', function(event) {
2 if (event.getModifierState('NumLock')) {
3 console.log('Num Lock is active');
4 }
5});
6
某些情况下,可能误触数字锁定键,或者初始某些键盘初始就是数字锁定的。当你输入u,显示4;当你输入k,显示的是2。这时候就需要按一下F11解除数字锁定。
检测滚动锁定
1document.addEventListener('keydown', function(event) {
2 if (event.getModifierState('ScrollLock')) {
3 console.log('Scroll Lock is active');
4 }
5});
6
检测其他特殊修饰键
1document.addEventListener('keydown', function(event) {
2 if (event.getModifierState('AltGraph')) {
3 console.log('AltGraph is active');
4 }
5 if (event.getModifierState('OS')) {
6 console.log('OS key (Windows key or Command key) is active');
7 }
8});
9
参考链接
上一篇:
useContext 的使用优化
下一篇:
探秘CSS伪元素:解锁网页设计的隐形魔法
相关笔记