2011-09-15 10 views
5

Hice mi tarea y revisé muchas preguntas, pero aún no pude encontrar algo que me permitiera trabajar.Desencadenar teclados (combinación de teclas) con jQuery

Tengo una entrada de búsqueda. Cuando el usuario hace clic en el ejemplo, quiero que la palabra "doctor" se escriba en la letra de entrada de mi búsqueda por letra. Pude haberlo hecho cambiando $ ("# búsqueda"). Val() hace mucho tiempo, pero aquí está el problema. Cuando normalmente el usuario escribe en la entrada de búsqueda, se está produciendo el autocompletado div. Se desencadena por un evento de pulsación. Si solo cambio el atributo val de entrada, el div autocompletado no saldrá, así que de alguna manera tengo que activar el evento keydown para que salga.

me encontré con esta solución:

$("#example").click(function() {  
    $("#search").focus(); 
    var e = jQuery.Event("keyup"); 
    e.keyCode = 50;      
    $("#search").trigger(e);      
}); 

pero no pude conseguir que funcione. Alguna idea, por favor?

Así es como se ve html:

<input type="text" id="search" /> 
Example: <span id="example">doctor</span> 
+0

Mi título dice que el evento de tecla, pero aparentemente solo se puede lograr con el evento de tecla, por lo que en el código utilicé la tecla en su lugar. De todos modos, ninguno está trabajando para mí. – Nazar

+0

También traté de usar e.which en lugar de e.keyCode allí. Todavía no sucede nada para cambiar. El script funciona hasta el evento focus(). La entrada se enfoca y el script parece detener la ejecución. – Nazar

Respuesta

8
$("#example").click(function() {  
    $("#search").focus(); 
    var e = jQuery.Event("keydown"); 
    e.keyCode = 50;      
    $("#search").trigger(e);      
}); 

ref: Definitive way to trigger keypress events with jQuery

+0

Supongo que encontré una respuesta que me funciona desde el enlace que proporcionaste, aunque miré antes de que nunca haya notado un comentario. Citando el comentario de @Nadia Alramli: > No se perdió entendió el concepto. Así no es como se supone que > trabajo. trigger solo llamará al controlador de eventos. En realidad, no será > imprimir la clave. Si desea simular el efecto de imprimir la clave, > simplemente agregue la clave al valor de entrada y active el evento al > al mismo tiempo. - Nadia Alramli 7 de mayo de 2009 a las 0:21 – Nazar

0

Una mejor manera es poner en funcionamiento su autocompletar en un lugar de textChange event keyup/abajo. De esta forma, puede usar $("#search").val() de la manera más fácil y se ejecutará el autocompletador.

ventaja adicional: Si utiliza TextChange también activará la función de autocompletar si el texto de copia-pega de usuario mediante el menú contextual del ratón, etc (y que no se disparará en las teclas de flecha o tabulación)

+0

¡Gracias por la respuesta! Seguramente comprobaré esto. No sabía que tal evento es posible. Sin embargo, filtré mi clave de modo que si se presionan las flechas, no se disparará autocompletar. – Nazar

+0

Me acabo de dar cuenta de que necesito activar la tecla presionar de todos modos, porque cuando el usuario presione el ejemplo, se escribirá la palabra _doctor_ y se obtendrá el div autocompletado. Luego necesitaré disparar una flecha hacia abajo una vez e ingresar la clave una vez para que vaya a la url de la primera sugerencia en autocompletar div. Se supone que es algo así como una demostración. – Nazar

+0

Claro, pero si fuera yo, haría '.textchange (autocomplete_handler)' y un '.keydown (arrows_and_enter_handler)' separado –

Cuestiones relacionadas