用 JavaScript 檢測大寫鎖定鍵的狀態
有的時候尤其是在進行密碼輸入時,我們需要檢查鍵盤上的 Caps Lock 鍵是否被打開,并通知用戶。這時可以通過用 KeyboardEvent.getModifierState() 方法 CapsLock 的值來執行此操作。
換句話說,我們必須偵聽元素上的鍵盤事件才能檢查 Caps Lock 鍵的狀態:
HTML:
- <form>
- <label for="username">Username:</label>
- <input id="username" name="username">
- <label for="password">Password:</label>
- <input id="password" name="password" type="password">
- <span id="password-message" style="display: none">Caps Lock is on</span>
- </form>
JavaScript:
- const el = document.getElementById('password');
- const msg = document.getElementById('password-message');
- el.addEventListener('keyup', e => {
- msg.style = e.getModifierState('CapsLock')
- ? 'display: block'
- : 'display: none';
- });
通過上面的例子可以看到,在選擇的元素上使用了 'keyup' 事件,然后調用 KeyboardEvent.getModifierState() 并檢查 'CapsLock' 鍵的狀態。'keydown'和 'keypress' 也能起到類似的作用。但是在多臺設備上進行測試后,似乎應該首選 keyup 方法,因為它在不同的操作系統和瀏覽器上的效果更好。