2010-10-02 11 views
10

Tengo un <input> que tiene un controlador de eventos en línea onkeydown. En este controlador, me gustaría llamar a una función y pasarle un parámetro especial: los datos del evento.Pasar datos de eventos en los controladores de eventos en línea

Cuando quiero manejar eventos (por ejemplo onmousemove) para todo el documento, yo uso el siguiente código:

document.onmousemove=function(e) { 
// here I can make a good use of the 'e' variable, 
// for example extract the mouse coordinates from it 
} 

y funciona (aunque no sé dónde está la variable de e - datos de eventos - viene de).
Pero esta vez quiero usar la función solo para el <input> mencionado anteriormente.
Necesito pasar los datos del evento a la función para que pueda obtener el código de la tecla presionada. Y quiero hacerlo en ese controlador de eventos en línea. He creado una función:

function myfunc (e) { 
    var evt=window.event?event:e; 
    var code=evt.keyCode; 
    alert (code); 
} 

y probado todos estos métodos:

<input onkeydown="myfunc(this)">

<input onkeydown="myfunc(this.onkeydown)">

<input onkeydown="myfunc(onkeydown)">

Pero ninguno de ellos trabajaba, la ventana de alerta mantuvo mostrando "indefinido".
Busqué una solución a mi problema en Google, pero no encontré nada que pudiera ayudarme a resolverlo.

Respuesta

14

<input onkeydown="myfunc(event)">

function myfunc (e) { 
    e = e || window.event; 
    var code = e.keyCode; 
    alert (code); 
} 
+0

Gracias realmente mucho :) Yo no sabía nada de lo global 'event' variable. Ahora funciona perfectamente, gracias de nuevo. – rhino

+0

, así que realmente debería leer un documento antes de entrar en el manejo de eventos de JavaScript, ya que puede ser complicado, especialmente si se trata de IE. De todos modos, me alegro de poder ayudar. – galambalazs

+1

No funciona en IE7 e IE 8 – Luckyy

Cuestiones relacionadas