zoukankan      html  css  js  c++  java
  • 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();
                }
            }
        };
    
        })();
    现主要从事PHP、Uinx/Linux、C/C++等方面的项目开发。
  • 相关阅读:
    spring core源码解读之ASM4用户手册翻译之一asm简介
    nginx启动,重启,关闭命令
    linux LVM分区查看dm设备
    jdbc 对sqlite的基本操作
    linux配置多个ip
    细说Linux下的虚拟主机那些事儿
    打造字符界面的多媒体Linux系统
    linux计划crontab
    因修改/etc/ssh权限导致的ssh不能连接异常解决方法
    Linux修改主机名
  • 原文地址:https://www.cnblogs.com/lsl8966/p/3324688.html
Copyright © 2011-2022 走看看