Definitive way to trigger keypress events with jQuery

后端 未结 10 2313
不知归路
不知归路 2020-11-22 00:33

I\'ve read all the answers on to this questions and none of the solutions seem to work.

Also, I am getting the vibe that triggering keypress with special characters

相关标签:
10条回答
  • 2020-11-22 00:46

    Of you want to do it in a single line you can use

    $("input").trigger(jQuery.Event('keydown', { which: '1'.charCodeAt(0) }));
    
    0 讨论(0)
  • 2020-11-22 00:46

    It can be accomplished like this docs

    $('input').trigger("keydown", {which: 50});
    
    0 讨论(0)
  • 2020-11-22 00:47

    I made it work with keyup.

    $("#id input").trigger('keyup');
    
    0 讨论(0)
  • 2020-11-22 00:48

    Slightly more concise now with jQuery 1.6+:

    var e = jQuery.Event( 'keydown', { which: $.ui.keyCode.ENTER } );
    
    $('input').trigger(e);
    

    (If you're not using jQuery UI, sub in the appropriate keycode instead.)

    0 讨论(0)
  • 2020-11-22 00:48

    Ok, for me that work with this...

    var e2key = function(e) {
        if (!e) return '';
        var event2key = {
            '96':'0', '97':'1', '98':'2', '99':'3', '100':'4', '101':'5', '102':'6', '103':'7', '104':'8', '105':'9', // Chiffres clavier num
            '48':'m0', '49':'m1', '50':'m2', '51':'m3', '52':'m4', '53':'m5', '54':'m6', '55':'m7', '56':'m8', '57':'m9', // Chiffres caracteres speciaux
            '65':'a', '66':'b', '67':'c', '68':'d', '69':'e', '70':'f', '71':'g', '72':'h', '73':'i', '74':'j', '75':'k', '76':'l', '77':'m', '78':'n', '79':'o', '80':'p', '81':'q', '82':'r', '83':'s', '84':'t', '85':'u', '86':'v', '87':'w', '88':'x', '89':'y', '90':'z', // Alphabet
            '37':'left', '39':'right', '38':'up', '40':'down', '13':'enter', '27':'esc', '32':'space', '107':'+', '109':'-', '33':'pageUp', '34':'pageDown' // KEYCODES
        };
        return event2key[(e.which || e.keyCode)];
    };
    
    var page5Key = function(e, customKey) {
        if (e) e.preventDefault();
        switch(e2key(customKey || e)) {
            case 'left': /*...*/ break;
            case 'right': /*...*/ break;
        }
    };
    
    $(document).bind('keyup', page5Key);
    
    $(document).trigger('keyup', [{preventDefault:function(){},keyCode:37}]); 
    
    0 讨论(0)
  • 2020-11-22 00:49

    The real answer has to include keyCode:

    var e = jQuery.Event("keydown");
    e.which = 50; // # Some key code value
    e.keyCode = 50
    $("input").trigger(e);
    

    Even though jQuery's website says that which and keyCode are normalized they are very badly mistaken. It's always safest to do the standard cross-browser checks for e.which and e.keyCode and in this case just define both.

    0 讨论(0)
提交回复
热议问题