2010-10-02 4 views
10

J'ai un <input> qui a un gestionnaire d'événements en ligne onkeydown. Dans ce gestionnaire, je voudrais appeler une fonction et lui passer un paramètre spécial - les données de l'événement.Transmission des données d'événement dans les gestionnaires d'événements en ligne

Quand je veux gérer les événements (par exemple onmousemove) pour l'ensemble du document, j'utilise le code suivant:

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

Et il fonctionne (bien que je ne sais pas où la variable e - données d'événement - vient de).
Mais cette fois, je veux utiliser la fonction uniquement pour le <input> mentionné ci-dessus.
J'ai besoin de transmettre les données d'événement à la fonction afin qu'elle puisse obtenir le code de la touche enfoncée. Et je veux le faire dans ce gestionnaire d'événement inline. J'ai créé une fonction:

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

et essayé toutes ces méthodes:

<input onkeydown="myfunc(this)">

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

<input onkeydown="myfunc(onkeydown)">

Mais aucun d'entre eux travaillaient, la fenêtre d'alerte maintenue affichant "non défini".
J'ai cherché une solution à mon problème dans Google, mais je n'ai rien trouvé qui puisse m'aider à le résoudre.

Répondre

14

<input onkeydown="myfunc(event)">

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

Merci vraiment beaucoup :) Je ne connaissais pas la event' 'globale variable. Maintenant, cela fonctionne parfaitement, merci encore. – rhino

+0

Eh bien, vous devriez vraiment lire un document avant d'entrer dans la gestion des événements javascript, car il peut être salissant, surtout si vous faites face à IE. En tout cas, je suis content que je puisse aider. – galambalazs

+1

Ne fonctionne pas sur IE7 & IE 8 – Luckyy