Domanda

Ho letto tutte le risposte a queste domande e nessuna delle soluzioni sembra funzionare.

Inoltre, ho la sensazione che l'attivazione della pressione dei tasti con caratteri speciali non funzioni affatto. Qualcuno può verificare chi ha fatto questo?

È stato utile?

Soluzione

Se si desidera attivare la pressione dei tasti o l'evento keydown, è sufficiente:

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

Altri suggerimenti

Ora leggermente più conciso con jQuery 1.6+ :

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

$('input').trigger(e);

(Se non stai usando l'interfaccia utente di jQuery, inserisci invece il codice chiave appropriato.)

La vera risposta deve includere keyCode:

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

Anche se il sito Web di jQuery dice che quali e keyCode sono normalizzati, si sbagliano molto gravemente. È sempre più sicuro eseguire i controlli cross-browser standard per e.which ed e.keyCode e in questo caso definirli entrambi.

Se stai usando anche l'interfaccia utente di jQuery, puoi fare così:

var e = jQuery.Event("keypress");
e.keyCode = $.ui.keyCode.ENTER;
$("input").trigger(e);

L'ho fatto funzionare con il keyup.

$("#id input").trigger('keyup');

Ok, per me che lavoro con questo ...

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}]); 

Nel caso in cui sia necessario prendere in considerazione il cursore corrente e la selezione del testo ...

Questo non funzionava per me per un'app AngularJS su Chrome. Come sottolinea Nadia nei commenti originali, il personaggio non è mai visibile nel campo di input (almeno, questa è stata la mia esperienza). Inoltre, le soluzioni precedenti non tengono conto della selezione di testo corrente nel campo di input. Ho dovuto usare una meravigliosa libreria jquery-selection .

Ho un tastierino numerico su schermo personalizzato che riempie più campi di input. Ho dovuto ...

  1. In primo piano, salva lastFocus.element
  2. Su sfocatura, salva la selezione di testo corrente (inizio e fine)

    var pos = element.selection('getPos')
    lastFocus.pos = { start: pos.start, end: pos.end}
    
  3. Quando viene premuto un pulsante sulla mia tastiera:

    lastFocus.element.selection( 'setPos', lastFocus.pos)
    lastFocus.element.selection( 'replace', {text: myKeyPadChar, caret: 'end'})
    

può essere realizzato anche in questo modo ( docs )

$('input').trigger("keydown", {which: 50});

Di quello che vuoi fare in una sola riga puoi usare

$("input").trigger(jQuery.Event('keydown', { which: '1'.charCodeAt(0) }));

console.log (String.fromCharCode (event.charCode));

suppongo che non sia necessario mappare il personaggio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top