2011-12-19 35 views
5

Tôi đang cố gắng tạo một giao diện điều khiển như ứng dụng, vì vậy tôi bắt tất cả các phím trên cửa sổ và thực hiện các công cụ liên quan với chúng (không quan trọng). Vấn đề là ở backspace. Tôi có đoạn mã sau:Bắt Backspace trên Chrome & Firefox là khác nhau

$(window).bind("keypress",function(e){ 
     var code = e.keyCode || e.which; 
     if (code == 8) { 
      a = $("#console").html(); 
      $("#console").html(a.substring(0,a.length-1)); 
      currentCommand = currentCommand.substring(0,currentCommand.length-1);   
      e.preventDefault(); 
     } 

Tuy nhiên, trong Firefox, nội dung của #console bị xóa nhưng Chrome không thực thi mã trên. Tôi cần một giải pháp tương thích trình duyệt chéo. Tôi đang thiếu gì?

ADDITION:

Nếu tôi sử dụng KeyDown/KeyUp thay vì bấm phím, tôi không thể để phát hiện nếu characeter là 'A' hoặc 'a' nó luôn luôn trả về 'A'.

+0

có thể trùng lặp của [Javascript e.keyCode không bắt Backspace/Del trong IE] (http://stackoverflow.com/questions/4084715/javascript-e-keycode-doesnt-catch-backspace -del-in-ie) – Keelan

+0

Có, không phải là một bản sao chính xác, nhưng câu hỏi được trả lời ở đó. – Keelan

Trả lời

4

Đọc nội dung này. IE không kích hoạt phím bấm cho các phím đặc biệt này. Có lẽ nó giống với một số trình duyệt khác.

Javascript e.keyCode doesn't catch Backspace/Del in IE

+0

nếu tôi thực hiện: \t '$ (window) .bind ("KeyDown", function (e) { \t \t var code = e.keyCode || e.which; \t \t console.log (code);' Nó luôn luôn được tôi mũ nhân vật như nó là alwayws 65 cho dù tôi nhấn A hoặc một – Mustafa

+0

Có lẽ bạn có thể thử để xem liệu nút SHIFT đã được ép? Giống như giải thích trong chủ đề này: http://stackoverflow.com/questions/3125727/how-to-differeniate-capital-letters-from-lower-ones-in-onkeydown-event-handler-m – Tys

+0

Không, tôi chắc chắn SHIFT không được nhấn – Mustafa

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