82 votos

¿Desencadenar un evento keypress/keydown/keyup en JS/jQuery?

¿Cuál es la mejor manera de simular un usuario introducir texto en un cuadro de entrada de texto en JS o jQuery?

Yo no quiero realmente poner texto en el cuadro de entrada, sólo quiero activar todos los controladores que normalmente sería conseguir accionados por un usuario escribir información en un cuadro de entrada. Esto significa foco, keydown, keypress, keyup y desenfoque. Creo.

¿Cómo se lograría esto?

Gracias!

141voto

ebynum Puntos 1475

Puede activar cualquiera de los eventos con una llamada directa a ellos, como este:

$(function() {
    $('item').keydown();
    $('item').keypress();
    $('item').keyup();
    $('item').blur();
});

¿Que hacer lo que estás tratando de hacer?

Probablemente, usted debe también desencadenar .focus() y potencialmente .change()

Si desea activar la clave-eventos con teclas específicas, usted puede hacerlo así:

$(function() {
    var e = $.Event('keypress');
    e.which = 65; // Character 'A'
    $('item').trigger(e);
});

Hay una discusión interesante de los eventos de pulsación de tecla aquí: jQuery Evento Keypress: Que se ha pulsado la tecla?, específicamente sobre la compatibilidad del navegador con el .que la propiedad.

16voto

cloakedninjas Puntos 1251

Para accionar una tecla, tuve que modificar la respuesta de @ebynum, en concreto, mediante la propiedad keyCode.

e = $.Event('keyup');
e.keyCode= 13; // enter
$('input').trigger(e);

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X