代碼如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>大寫鍵盤鎖定提示</title> </head> <body> 請輸入密碼:<input class="text" id="loginPasswd" type="password"/> <div id="capital" style="display:none;color:#F90;padding:2px 0 2px 95px;position:absolute;">大寫鎖定已開啟</div> <script type="text/javascript"> var inputPWD = document.getElementById('loginPasswd'); inputPWD.onfocus = function () { isCapsLock(); } /* 檢測輸入框的大小寫是否開啟 */ function isCapsLock() { var inputPWD = document.getElementById('loginPasswd'); var capital = false; var capitalTip = { elem: document.getElementById('capital'), toggle: function (s) { var sy = this.elem.style; var d = sy.display; if (s) { sy.display = s; } else { sy.display = d == 'none' ? '' : 'none'; } } } var detectCapsLock = function (event) { if (capital) { return } ; var e = event || window.event; var keyCode = e.keyCode || e.which; var isShift = e.shiftKey || (keyCode == 16 ) || false; if (((keyCode >= 65 && keyCode <= 90 ) && !isShift) || ((keyCode >= 97 && keyCode <= 122 ) && isShift)) { capitalTip.toggle('block'); capital = true } else { capitalTip.toggle('none'); } } //判斷是否是IE瀏覽器(解決自帶的和自寫的重復出現問題) function isIE() { if (!!window.ActiveXObject || "ActiveXObject" in window) { return true; } else { return false; } } //如果不是IE則進行手動提示 if (!isIE()) { inputPWD.onkeypress = detectCapsLock; inputPWD.onkeyup = function (event) { var e = event || window.event; if (e.keyCode == 20 && capital) { capitalTip.toggle(); return false; } } } } </script> </body> </html>
需要注意:
需要通過獲取焦點事件調用判斷大寫鍵盤鎖定事件,如果直接調用會出現密碼框失去焦點后切換大寫鎖定后再次進入密碼框會出現大寫鎖定提示錯誤的問題