2013-07-01 34 views
7

Trong đoạn mã sau:jQuery lên phím/xuống phím phát hiện phím không hoạt động?

$(document).keypress(function(e) { 
     var code = (e.keyCode ? e.keyCode : e.which); 
     if (code == 40) { 
      alert("down pressed"); 
     } else if (code == 38) { 
      alert("up pressed"); 
     } 
    }); 

Tôi đang cố gắng để phát hiện nếu phím hoặc lên xuống phím được nhấn. Tại sao nó không hoạt động?

Fiddle http://jsfiddle.net/K9uDn/10/

Tôi đang ở chrome

+0

Sự kiện này được không bắn. – crush

+1

Vâng, nó hoạt động nếu tôi thay đổi 'nhấn phím 'thành' phím tắt 'hoặc' khóa \' (và nếu tôi xóa những 'self.gotIt()' và 'self.forgotIt()'). Tôi khuyên bạn nên sử dụng 'keyup' hoặc' keydown' anyways, ngay cả khi bạn không có vấn đề này ... nó tốt hơn nhiều, và mọi thứ đều có thể dự đoán được với nó. 'keydown' cũng nên thay thế' nhấn phím '. – MiJyn

+2

[jQuery bình thường hóa 'keyCode' và' charCode' bằng 'which', vì vậy bạn không cần phải kiểm tra cả hai. Chỉ cần sử dụng 'which'.] (Http://api.jquery.com/event.which/) – crush

Trả lời

19

Sử dụng KeyDown thay vì bấm phím, một số trình duyệt không cháy bấm phím khi một "chìa khóa đặc biệt (như mũi tên)" được nhấn

+1

Yup theo trang web của jQuery: _Lưu ý: vì sự kiện nhấn phím không được bao gồm trong bất kỳ đặc điểm kỹ thuật chính thức nào, hành vi thực tế gặp phải khi sử dụng nó có thể khác nhau giữa các trình duyệt, phiên bản trình duyệt và nền tảng._ – aug

+0

Hãy cẩn thận khi sử dụng phím bấm để phát hiện đặc biệt phím. Trên một số nền tảng nó sẽ chỉ cháy một lần, trên những người khác sẽ cháy lặp đi lặp lại. Hãy thử cách này: http://howtodoinjava.com/2013/12/20/jquery-keyup-function-demo/ trên trình duyệt web và nền tảng của bạn và xem tần suất Ctrl phát ra khi được giữ. Trên OEL 6.x nó cháy một lần. Trên Windows 7 nó cháy lặp đi lặp lại. –

0

trên ('KeyUp') không làm việc trong IE. Không ít nhất trong phiên bản 9.

0

Đây là Fiddle của một phiên bản cố định của mã javascript with extra buttons trapped using a switch/case statement

$(document).on('keydown',function(e) { 
     var code = (e.keyCode ? e.keyCode : e.which); 
     switch (code){ 
      case 34: 
      alert("Page down pressed"); 
      break; 
      case 33: 
      alert("Page up pressed"); 
      break; 
      case 40: 
      alert("Down pressed"); 
      break; 
      case 38: 
      alert("Up pressed"); 
      break; 
      case 37: 
      alert("Left pressed"); 
      break; 
      case 39: 
      alert("Right pressed"); 
      break; 
     } 
Các vấn đề liên quan