js大小写锁判断

<html>
    <head>
        <title>CapsLock Demo</title>
        <script src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js" type="text/javascript" charset="utf-8"></script>
        <script src="./CapsLock.js?ver=1.0" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            window.addEvent('domready', function() {
                var pass = document.id('passcapsnotice'),
                    user = document.id('usercapsnotice');

                function passCapsOn()  { pass.setStyle('display', 'block'); }
                function passCapsOff() { pass.setStyle('display', 'none'); }

                function userCapsOn()  { user.setStyle('display', 'block'); }
                function userCapsOff() { user.setStyle('display', 'none'); }

                document.id('username').addEvents({
                    'capsLockOn': userCapsOn,
                    'capsLockOff': userCapsOff,
                    'blur': userCapsOff,
                    'focus': function(event) {
                        if (event.hasCapsLock()) { userCapsOn(); }
                    }
                });

                document.id('password').addEvents({
                    'capsLockOn': passCapsOn,
                    'capsLockOff': passCapsOff,
                    'blur': passCapsOff,
                    'focus': function(event) {
                        if (event.hasCapsLock()) { passCapsOn(); }
                    }
                });

            });
        </script>
        <style type="text/css">
        form {
            width: 500px;
            margin: 0 auto;
        }
        .label { width: 60px; }
        .field { width: 260px; }
        .notice {
            display: none;
            line-height: 2em;
            margin-top: .5em;
            padding: 0;
        }
        </style>
    </head>

    <body>
        <form>
            <fieldset>
                <legend>Login</legend>
                <table>
                    <tbody>
                        <tr>
                            <td class="label"><label for="username">Username:</label></td>
                            <td class="field"><input type="text" id="username" name="username" class="title" /></td>
                            <td><span id="usercapsnotice" class="notice">Caps On.</span></td>
                        </tr>
                        <tr>
                            <td class="label"><label for="password">Password:</label></td>
                            <td class="field"><input type="password" id="password" name="password" class="title" /></td>
                            <td><span id="passcapsnotice" class="notice">Caps On.</span></td>
                        </tr>
                    </tbody>
                </table>
            </fieldset>
        </form>
    </body>
    </html>

其中:

(function() {

    Browser.CapsLock = null;
    var capsOn = null,
        target = (Browser.Engine.trident) ? document : window;

    /**
     * Figure out if caps lock is on by checking for a lower case letter with shift
     * pressed or an uppercase letter without shift. Once we know if it is on/off,
     * remove the event listener.
     */
    function checkCapsKey(event) {
        if (event.code > 64 && event.code < 91) { // Capital Letters
            Browser.CapsLock = capsOn = (event.shift) ? null : true;
        } else if (event.code > 96 && event.code < 123) { // Lower-case Letters
            Browser.CapsLock = capsOn = (event.shift) ? true : false;
        }

        if (capsOn !== null) {
            target.removeEvent('keypress', checkCapsKey);
        }
    }

    /**
     * If user moves away from the window, we can't tell what happened with the caps
     * key when he returns so we reset the caps checker.
     */
    window.addEvent('blur', function(event) {
        Browser.CapsLock = capsOn = null;
        target.addEvent('keypress', checkCapsKey);
    });

    /**
     * Checks an event for caps lock key presses. If it's Safari 3+, keyup means caps lock
     * is off and keydown means caps lock is on. Otherwise just toggle the value of capsOn.
     */
    function checkCapsPress(event) {
        if (event.code == 20 && capsOn !== null) {
            if (Browser.Engine.webkit && Browser.Engine.version > 420) {
                Browser.CapsLock = capsOn = (event.event.type == 'keydown');
            } else {
                if (event.event.type == 'keydown') {
                    Browser.CapsLock = capsOn = !capsOn;
                }
            }
        }
    }

    /**
     * Add events to the target to monitor for caps lock key presses and to do
     * the initial caps lock key sniffing.
     */
    target.addEvents({
        'keyup': checkCapsPress,
        'keydown': checkCapsPress,
        'keypress': checkCapsKey
    });

    Event.implement({ hasCapsLock: function(event) { return capsOn; } });

    Element.Events.capsLockOn = {
        base: 'keydown',
        condition: function(event) {
            if (event.code == 20) {
                if (Browser.Engine.webkit && Browser.Engine.version > 420) {
                    return true;
                } else if (capsOn !== null) {
                    return !capsOn; 
                }
            } else if (capsOn !== null) {
                return event.hasCapsLock();
            }
        }
    };

    Element.Events.capsLockOff = {
        base: (Browser.Engine.webkit) ? 'keyup' : 'keydown',
        condition: function(event) {
            if (event.code == 20) {
                if (Browser.Engine.webkit && Browser.Engine.version > 420) {
                    return true;
                } else if (capsOn !== null) {
                    return (capsOn === true);
                }
            } else if (capsOn !== null) {
                return !event.hasCapsLock();
            }
        }
    };

    })();

 

转载于:https://www.cnblogs.com/lsl8966/p/3324688.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值