2013-06-12 38 views
5

Mã này không làm việc cho tôi trong firefox (V21.0) nhưng làm việc trong IE (V9, V10) và Chrome (V 27.0.1453.110 m)ReferenceError: sự kiện không được định nghĩa trong Mozila firefox

phương pháp cal :

<input type="text" id="txt1" class="search-bar-input" 
         onkeyup="handleKeyPress('btn1');"> 

phương pháp defenition:

function handleKeyPress(searchButtonId) { 
    if (event.keyCode === 13) { 
    alert(event.KeyCode); 
    } 
} 

Thông báo Lỗi:

ReferenceError: event is not defined 
if (event.keyCode === 13) { 

bất kỳ ai có ý tưởng nào để giải quyết vấn đề?

Trả lời

10

Sử dụng

<input type="text" id="txt1" class="search-bar-input" onkeyup="handleKeyPress(event, 'btn1');"> 

Sau đó

function handleKeyPress(event) { 
    event = event || window.event //For IE 
    if (event.keyCode === 13) { 
     alert(event.keyCode); 
    } 
} 

Demo: Fiddle

+0

không làm việc trong IE 9 –

+1

@Arun_C_C đó là vì trong IE nhập từ khóa cần tải lại trang lực lượng thay vì onkeyup thử onkeypress http://jsfiddle.net/arunpjohny/T9x9L/2/ –

+0

Không hoạt động trong Firefox 50.1.0 –

2

Bạn có thể lưu trữ tham số btn1 dưới dạng thuộc tính data-* và sử dụng Javascript không phô trương để gán trình xử lý sự kiện (thay vì nội tuyến).

Dòng của bạn alert(event.KeyCode); sai, K trong KeyPress phải là chữ thường k.

Fiddle

HTML

<input type="text" id="txt1" class="search-bar-input" data-searchButtonId="btn1" /> 

Javascript:

function handleKeyPress(event) { 
    if (event.keyCode === 13) { 
     console.log(event.keyCode + this.getAttribute("data-searchButtonId")); 
    } 
} 

window.onload = function(){ 
    document.getElementById("txt1").onkeyup = handleKeyPress; 
} 
Các vấn đề liên quan