2010-10-02 20 views
10

Mam <input> z wbudowanym programem obsługi zdarzeń onkeydown. W tym module obsługi chciałbym wywołać funkcję i przekazać jej specjalny parametr - dane zdarzenia.Przekazywanie danych zdarzeń do wbudowanych programów obsługi zdarzeń

Gdy chcę do obsługi zdarzeń (np onmousemove) dla całego dokumentu, używam następujący kod:

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

I to działa (choć nie wiem, gdzie e zmienna - dane o zdarzeniach - pochodzi z).
Ale tym razem chcę użyć funkcji tylko wspomnianej powyżej <input>.
Muszę przekazać dane zdarzenia do funkcji, aby uzyskać kod wciśniętego klawisza. I chcę to zrobić w tym wbudowanym programie obsługi zdarzeń. I utworzeniu funkcji:

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

i wypróbowaniu wszystkich tych metod:

<input onkeydown="myfunc(this)">

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

<input onkeydown="myfunc(onkeydown)">

Ale żaden z nich nie pracował, okno alertu utrzymane wyświetlanie "niezdefiniowane".
Szukałem rozwiązania mojego problemu w Google, ale nie znalazłem niczego, co mogłoby mi pomóc go rozwiązać.

Odpowiedz

14

<input onkeydown="myfunc(event)">

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

Dziękuję bardzo dużo :) Nie wiedziałam o światowym 'zmiennej event'. Teraz działa doskonale, dzięki jeszcze raz. – rhino

+0

cóż, powinieneś naprawdę przeczytać dokument zanim przejdziesz do obsługi zdarzeń javascript, ponieważ może on stać się bałaganiarski, szczególnie jeśli masz do czynienia z IE. W każdym razie cieszę się, że mogłem pomóc. – galambalazs

+1

Nie działa w IE7 i IE 8 – Luckyy

Powiązane problemy