2012-09-17 21 views
36

Chciałbym tylko znać zakresy JavaScript keyCode s odpowiadające możliwym do wpisania znakom; lub, alternatywnie, zakres nie-nadających się do użycia (kontrolnych) znaków, takich jak backspace, escape, command, shift itd., więc mogę je zignorować.Ustal, czy JavaScript e.keyCode jest znakiem możliwym do wydrukowania (niekontrolowanym).

Powód, dla którego pytam, wywołanie String.fromCharCode() powoduje nieparzyste znaki dla klawiszy sterujących. Na przykład dostaję "[" dla lewego polecenia, "%" dla lewej strzałki. Dziwactwo takie.

+6

Nie myślisz, że najpierw go wylogowałem? Daj spokój. Czy sprawdziłeś te wyniki lub po prostu założyłeś, że jestem idiotą? – devios1

+0

Szukane słowo to * możliwe do wydrukowania *, najprawdopodobniej. Wydaje się również, że 'keyCode' jest [zależny od systemu i implementacji] (https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent#Key_values), co tylko rodzi problemy – Alexander

+0

Czy masz na myśli" printable "? Z pewnością każdy kod jest "możliwy do wpisania" ... – nnnnnn

Odpowiedz

71

keyDown daje keyCode klawisza przycisku, bez żadnych modyfikacji.

$("#keypresser").keydown(function(e){ 
    var keycode = e.keyCode; 

    var valid = 
     (keycode > 47 && keycode < 58) || // number keys 
     keycode == 32 || keycode == 13 || // spacebar & return key(s) (if you want to allow carriage returns) 
     (keycode > 64 && keycode < 91) || // letter keys 
     (keycode > 95 && keycode < 112) || // numpad keys 
     (keycode > 185 && keycode < 193) || // ;=,-./` (in order) 
     (keycode > 218 && keycode < 223); // [\]' (in order) 

    return valid; 
}); 

Tylko klawiszy numerycznych, klawiszy iz spacja będzie mieć kody klawiszy korelowanie do String.fromCharCode ponieważ używa wartości Unicode.

Keypress będzie reprezentacją kodu znaków wprowadzonego tekstu. Zwróć uwagę, że to zdarzenie nie zostanie wywołane, jeśli żaden tekst nie zostanie "wydrukowany" w wyniku naciśnięcia klawisza.

$("#keypresser").keypress(function(e){ 
    var charcode = e.charCode; 
    var char = String.fromCharCode(charcode); 
    console.log(char); 
}); 

http://jsfiddle.net/LZs2D/1/ Pokaże, jak to działa.

KeyUp zachowuje się podobnie do KeyDown.

+4

Klawisz tabulacyjny ma kod klucza "9" – Shmiddty

+1

Wiele znaków jest pominiętych, np. ',' lub '%' –

+0

@AlexanderElgin Przecinek jest tam, kod 190.% jest taki sam jak 5, keycode 52, z wciśniętym klawiszem Shift. – BobRodes