2011-12-19 10 views
5

Sto provando a creare un'applicazione simile alla console, quindi sto recuperando tutti i tasti sulla finestra e faccio cose correlate con loro (non importante). Il problema è al backspace. Ho il seguente codice:Catching Backspace su Chrome e Firefox è diverso

$(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(); 
     } 

Tuttavia, in Firefox, i contenuti del #console vengono cancellati, ma Chrome non esegue il codice di cui sopra. Ho bisogno di una soluzione compatibile cross-browser. Cosa mi manca?

AGGIUNTA:

Se uso keydown/keyup invece di pressione dei tasti, non sono in grado di rilevare se il characeter era 'A' o 'a' restituisce sempre 'A'.

+0

Eventuali duplicati di [Javascript e.keyCode non cattura Backspace/Del in IE] (http://stackoverflow.com/questions/4084715/javascript-e-keycode-doesnt-catch-backspace -del-in-ie) – Keelan

+0

Sì, non è un duplicato esatto, ma la domanda viene data lì. – Keelan

risposta

4

Leggere questo. IE non attiva la pressione di un tasto per quelle chiavi speciali. Forse è lo stesso con alcuni degli altri browser.

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

+0

se faccio: \t '$ (window) .bind ("KeyDown", funzione (e) {var \t \t codice = e.keyCode || e.which; \t \t console.log (Codice);' Mi capita sempre di usare caratteri maiuscoli come è sempre 65 se preme A o – Mustafa

+0

Forse puoi provare a vedere se è stato premuto il tasto SHIFT? Come spiegato in questa discussione: http://stackoverflow.com/questions/3125727/how-to-differeniate-capital-letters-from-lower-ones-in-onkeydown-event-handler-m – Tys

+0

No, sono sicuro che SHIFT non è stato premuto – Mustafa

Problemi correlati