2010-11-03 8 views
19

Sto provando a catturare l'evento urgente di tasti Backspace e Elimina utilizzando javascript/jQuery con questo tipo di codice.Javascript e.keyCode non intercetta Backspace/Del in IE

$("textarea[name=txt]").keypress(function(e){ 
    var keycode = e.keyCode ? e.keyCode : e.which; 

    if(keycode == 8){ // backspace 
     // do somethiing 
     alert(keycode); 
    } 

    if(keycode == 46){ // delete 
     // do somethiing 
     alert(keycode); 
    } 

}); 

Queste righe di codice funzionano perfettamente in Firefox (3.6.12). Ciò significa che l'avviso viene visualizzato quando si preme Backspace o Elimina. Ma questo non funziona in Internet Explorer (8)

Qualcuno potrebbe suggerirmi un modo diverso per catturare questi eventi di stampa chiave in Internet Explorer?

+1

[Questa pagina] (http://jimblackler.net/blog/?p=20) sembra suggerire che è necessario utilizzare l'evento 'keydown' invece dell'evento' keypress'. È così semplice? – clarkf

risposta

25

Se si desidera supportare IE e si utilizzano i tasti speciali (come delete e backspace) Io suggerisco di usare keydown/keyup invece.

Tasti speciali

Explorer non si aziona la pressione del tasto evento per eliminazione, fine, entrano, fuga, tasti funzione, a casa, inserire, PaginaSu/Giù e tab.

Se è necessario rilevare queste chiavi, farsi un favore e cercare il proprio codice chiave onkeydown/su e ignorare sia onkeypress che charCode.

Si può leggere di più su questioni cross browser di Detecting keystrokes(Quirksmode).

-4

Il codice chiave per Backspace assume il valore = se abbiamo già alcuni caratteri in una casella di testo.

il codice della chiave sarà = Se non ci sono caratteri nella casella di testo e stiamo cercando di colpire Backspace.

+2

Il carattere 's' non è 83? – kzh