jquery鼠标键盘事件

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>鼠标键盘事件</title>
        <meta http-equiv="X-UA-Compatible" content="IE=Edge">
        <meta name="viewport" content="width=device-width"/>
        <style>
            html,body{
                height: 100%;
            }
        </style>
    </head>
    <body>

        <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
        <script>
            //键盘事件执行回调函数
            /*
             *定义keyCode容器,根据需求自己添加按键
             */
            window.keyCodeASCII = {
                "A": 65, "B": 66, "C": 67, "D": 68, "E": 69, "F": 70, "G": 71,
                "H": 72, "I": 73, "J": 74, "K": 75, "L": 76, "M": 77, "N": 78,
                "O": 79, "P": 80, "Q": 81, "R": 82, "S": 83, "T": 84,
                "U": 85, "V": 86, "W": 87, "X": 88, "Y": 89, "Z": 90,
                "F1": 112, "F2": 113, "F3": 114, "F4": 115, "F5": 116, "F6": 117, "F7": 118, "F8": 119, "F9": 120, "F10": 121, "F11": 122, "F12": 123,
                "0": 48, "1": 49, "2": 50, "3": 51, "4": 52, "5": 53, "6": 54, "7": 55, "8": 56, "9": 57,
                "Esc": 27,
                "BackSpace": 8,
                "Tab": 9,
                "Enter": 13,
                "Delete": 46,
                "Shift": 16,
                "Ctrl": 17,
                "Alt": 18,
                "Space": 32,
                "Left": 37,
                "Up": 38,
                "Right": 39,
                "Down": 40,
                "PageUp": 33,
                "PageDown": 34
            };
            /*
             *键盘事件回调函数
             */
            window.doPressKey = function (o) {
                var e = event || window.event;
                o.keyName = o.keyName || "Enter";
                var fn = false,
                        str = o.keyName.split('|');
                $.each(str, function (i) {
                    fn = fn || (e.which == keyCodeASCII[str[i]]);
                });
                if (e && fn) {
                    if (typeof o.preFun == 'function') {
                        o.preFun();
                    }
                    if (typeof o.sucFun == 'function') {
                        o.sucFun(e);
                    }
                }
            };
            //鼠标点击事件
            window.doClickMouse = function (obj, callback, type) {
                //禁止浏览器默认事件
                $(document).delegate(obj, 'contextmenu', function (e) {
                    e.preventDefault();
                });
                $(document).delegate(obj, 'mousedown', function (e) {
                    var $t = $(this);
                    var fn = type == 'left' ? e.which == 1 : e.which == 3;
                    if (fn) {
                        if (typeof callback == 'function') {
                            //右键执行回调函数
                            callback(e, $t);
                        }
                    }
                });
            };
            $(function () {

                //点击鼠标右键
                doClickMouse('body', function (e, $t) {
                    alert('不准右键');
                });

                //点击鼠标左键
                doClickMouse('body', function (e, $t) {
                    //判断是否同时按下ctrl键
                    if (e.ctrlKey && !e.shiftKey && !e.altKey) {
                        alert('你按住Ctrl+鼠标左键做什么');
                    }
                }, 'left');

                $(document).on('keydown', function (e) {
                    
                    //按下Ctrl+Shift+Enter
            //所有键盘事件都加上下面这三种表达式是否为真的判断,是为了避免热键冲突,测试发现不加判断会出现这种情况:比如只需要Ctrl+Enter事件,但是Ctrl+Enter与Ctr+Shift+Enter都会执行相同的回调
            if (e.ctrlKey && e.shiftKey && !e.altKey) {
                        doPressKey({
                            keyName: 'Enter',
                            preFun: function () {
                                //禁止浏览器默认事件
                                e.preventDefault();
                            },
                            sucFun: function (e) {
                                alet('你同时按下了Ctrl+Shift+Enter键');
                            }
                        });
                    }

                    //按下Ctrl+C
                    if (e.ctrlKey && !e.shiftKey && !e.altKey) {
                        doPressKey({
                            keyName: 'A',
                            preFun: function () {
                                //禁止浏览器默认事件
                                e.preventDefault();
                            },
                            sucFun: function (e) {
                                alert('禁止全选');
                            }
                        });
                        doPressKey({
                            keyName: 'C',
                            preFun: function () {
                                //禁止浏览器默认事件
                                e.preventDefault();
                            },
                            sucFun: function (e) {
                                alert('不准复制');
                            }
                        });
                        doPressKey({
                            keyName: 'V',
                            preFun: function () {
                                //禁止浏览器默认事件
                                e.preventDefault();
                            },
                            sucFun: function (e) {
                                alert('不准粘贴');
                            }
                        });
                    }

                    //按下Up或者PageUp
                    if (!e.ctrlKey && !e.shiftKey && !e.altKey) {
                        doPressKey({
                            keyName: 'Up|PageUp',
                            preFun: function () {
                                e.preventDefault();
                            },
                            sucFun: function (e) {
                                alert('你按下了Up或者PageUp键');
                            }
                        });
                    }

                });

            });
        </script>
    </body>
</html>

  

posted @ 2016-11-28 15:11  vzane  阅读(283)  评论(0)    收藏  举报