js實現密碼輸入框對開啟鍵盤大寫鎖定的提示(IE瀏覽器下有自動識別提示則不執行(用IE自帶效果即可))


代碼如下:

<!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>

需要注意:

需要通過獲取焦點事件調用判斷大寫鍵盤鎖定事件,如果直接調用會出現密碼框失去焦點后切換大寫鎖定后再次進入密碼框會出現大寫鎖定提示錯誤的問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM