jQuery Event Keypress: Which key was pressed?

后端 未结 24 2477
半阙折子戏
半阙折子戏 2020-11-21 16:48

With jQuery, how do I find out which key was pressed when I bind to the keypress event?

$(\'#searchbox input\').bind(\'keypress\', function(e) {});
         


        
24条回答
  •  挽巷
    挽巷 (楼主)
    2020-11-21 16:48

    Witch ;)

    /*
    This code is for example. In real life you have plugins like :
    https://code.google.com/p/jquery-utils/wiki/JqueryUtils
    https://github.com/jeresig/jquery.hotkeys/blob/master/jquery.hotkeys.js
    https://github.com/madrobby/keymaster
    http://dmauro.github.io/Keypress/
    
    http://api.jquery.com/keydown/
    http://api.jquery.com/keypress/
    */
    
    var event2key = {'97':'a', '98':'b', '99':'c', '100':'d', '101':'e', '102':'f', '103':'g', '104':'h', '105':'i', '106':'j', '107':'k', '108':'l', '109':'m', '110':'n', '111':'o', '112':'p', '113':'q', '114':'r', '115':'s', '116':'t', '117':'u', '118':'v', '119':'w', '120':'x', '121':'y', '122':'z', '37':'left', '39':'right', '38':'up', '40':'down', '13':'enter'};
    
    var documentKeys = function(event) {
        console.log(event.type, event.which, event.keyCode);
    
        var keycode = event.which || event.keyCode; // par exemple : 112
        var myKey = event2key[keycode]; // par exemple : 'p'
    
        switch (myKey) {
            case 'a':
                $('div').css({
                    left: '+=50'
                });
                break;
            case 'z':
                $('div').css({
                    left: '-=50'
                });
                break;
            default:
                //console.log('keycode', keycode);
        }
    };
    
    $(document).on('keydown keyup keypress', documentKeys);
    

    Demo : http://jsfiddle.net/molokoloco/hgXyq/24/

提交回复
热议问题