2010-10-02 36 views
10

Tôi có một số <input> có trình xử lý sự kiện nội tuyến onkeydown. Trong trình xử lý này, tôi muốn gọi một hàm và chuyển một tham số đặc biệt cho nó - dữ liệu sự kiện.Truyền dữ liệu sự kiện trong trình xử lý sự kiện nội tuyến

Khi tôi muốn để xử lý các sự kiện (ví dụ onmousemove) cho toàn bộ tài liệu, tôi sử dụng đoạn mã sau:

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

Và nó hoạt động (mặc dù tôi không biết nơi e biến - dữ liệu sự kiện - đến từ).
Nhưng lần này tôi chỉ muốn sử dụng chức năng cho số <input> được đề cập ở trên.
Tôi cần chuyển dữ liệu sự kiện vào hàm để có thể lấy mã của phím được nhấn. Và tôi muốn làm điều đó trong trình xử lý sự kiện nội tuyến đó. Tôi đã tạo một hàm:

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

và thử tất cả các phương pháp này:

<input onkeydown="myfunc(this)">

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

<input onkeydown="myfunc(onkeydown)">

Nhưng không ai trong số họ làm việc, cửa sổ cảnh báo giữ hiển thị "không xác định".
Tôi đã tìm giải pháp cho vấn đề của mình trong Google, nhưng không tìm thấy bất kỳ thứ gì có thể giúp tôi giải quyết vấn đề.

Trả lời

14

<input onkeydown="myfunc(event)">

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

Cảm ơn bạn thực sự nhiều :) Tôi không biết về toàn cầu 'event' biến. Bây giờ nó hoạt động hoàn hảo, cảm ơn một lần nữa. – rhino

+0

cũng bạn thực sự nên đọc một bài báo trước khi bạn nhận được vào xử lý sự kiện javascript bởi vì nó có thể nhận được lộn xộn đặc biệt là nếu bạn đối phó với IE. Dù sao, tôi vui vì tôi có thể giúp. – galambalazs

+1

Không hoạt động trên IE7 và IE 8 – Luckyy

Các vấn đề liên quan