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?
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?
Risposte:
Se vuoi attivare l'evento keypress o keydown, tutto ciò che devi fare è:
var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
$("input").trigger(e);
Leggermente più conciso ora con jQuery 1.6+ :
var e = jQuery.Event( 'keydown', { which: $.ui.keyCode.ENTER } );
$('input').trigger(e);
(Se non stai utilizzando l'interfaccia utente di jQuery, inserisci invece il codice chiave appropriato.)
.trigger(jQuery.Event('name', props))
. Guarda l'esempio jsfiddle.net/9ggmrbpd/1 - le proprietà dell'evento attivato vengono passate così come sono. Codice sorgente: github.com/jquery/jquery/blob/master/src/event.js#L739
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 quale e keyCode sono normalizzati, si sbagliano molto gravemente. È sempre più sicuro eseguire i controlli cross-browser standard per e.which e e.keyCode e in questo caso definirli entrambi.
e.keyCode = e.which = 50;
in una sola riga sarebbe più bello. :)
keyCode
non ha funzionato. Ho dovuto impostare entrambi per farlo funzionare
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);
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 immissione (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 selezione di librerie jquery .
Ho un tastierino numerico su schermo personalizzato che riempie più campi di input. Dovevo...
Alla sfocatura, salva la selezione di testo corrente (inizio e fine)
var pos = element.selection('getPos')
lastFocus.pos = { start: pos.start, end: pos.end}
Quando viene premuto un pulsante sulla tastiera:
lastFocus.element.selection( 'setPos', lastFocus.pos)
lastFocus.element.selection( 'replace', {text: myKeyPadChar, caret: 'end'})
Di te vuoi farlo in una sola riga che puoi usare
$("input").trigger(jQuery.Event('keydown', { which: '1'.charCodeAt(0) }));
console.log( String.fromCharCode(event.charCode) );
non c'è bisogno di mappare il personaggio immagino.
Può essere realizzato come questo documento
$('input').trigger("keydown", {which: 50});