form - Manera definitiva de activar eventos de pulsación de teclas con jQuery
onkeypress input text jquery (10)
He leído todas las respuestas a estas preguntas y ninguna de las soluciones parece funcionar.
Además, estoy recibiendo la vibra de que la activación de la pulsación de tecla con caracteres especiales no funciona en absoluto. ¿Alguien puede verificar quién ha hecho esto?
De lo que quieras hacer en una sola línea puedes usar
$("input").trigger(jQuery.Event(''keydown'', { which: ''1''.charCodeAt(0) }));
En caso de que necesite tener en cuenta el cursor actual y la selección de texto ...
Esto no me funcionó para una aplicación AngularJS en Chrome. Como Nadia señala en los comentarios originales, el personaje nunca es visible en el campo de entrada (al menos, esa fue mi experiencia). Además, las soluciones anteriores no tienen en cuenta la selección de texto actual en el campo de entrada. Tuve que usar una maravillosa biblioteca jquery-selection .
Tengo un teclado numérico en pantalla personalizado que llena varios campos de entrada. Tuve que ...
- En el foco, guarda el lastFocus.element
En el desenfoque, guarde la selección de texto actual (iniciar y detener)
var pos = element.selection(''getPos'') lastFocus.pos = { start: pos.start, end: pos.end}
Cuando se presiona un botón en mi teclado:
lastFocus.element.selection( ''setPos'', lastFocus.pos) lastFocus.element.selection( ''replace'', {text: myKeyPadChar, caret: ''end''})
La respuesta real tiene que incluir keyCode:
var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
e.keyCode = 50
$("input").trigger(e);
Aunque el sitio web de jQuery dice que los códigos de teclas y los códigos están normalizados, están muy equivocados. Siempre es más seguro realizar las comprobaciones estándar de varios navegadores para e.which y e.keyCode y, en este caso, defina ambos.
Lo hice funcionar con keyup.
$("#id input").trigger(''keyup'');
Ok, para mi trabajar con esto ...
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}]);
Si desea activar el evento de pulsación de tecla o keydown, todo lo que tiene que hacer es:
var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
$("input").trigger(e);
Si también estás usando la interfaz de usuario de jQuery, puedes hacer lo siguiente:
var e = jQuery.Event("keypress");
e.keyCode = $.ui.keyCode.ENTER;
$("input").trigger(e);
También se puede lograr así ( docs )
$(''input'').trigger("keydown", {which: 50});
Un poco más conciso ahora con jQuery 1.6+ :
var e = jQuery.Event( ''keydown'', { which: $.ui.keyCode.ENTER } );
$(''input'').trigger(e);
(Si no está utilizando la interfaz de usuario de jQuery, sustitúyala en el código clave correspondiente).
console.log( String.fromCharCode(event.charCode) );
no hay necesidad de mapear el personaje, supongo.