确定JavaScript e.keyCode是否为可打印(非控制)字符

我只想知道对应于可键入字符的JavaScript keyCode的范围; 或者可选的,不可键入(控制)字符的范围,如退格,转义,命令,移位等,所以我可以忽略它们。

我问的原因是调用String.fromCharCode()导致控制键奇怪的字符。 例如,我得到“[”为左侧的命令,“%”为左侧的箭头。 这样的古怪。

Keydown会给你所按的键码,没有任何修改。

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

只有数字键,字母键和空格键具有与String.fromCharCode相关的键码,因为它使用Unicode值。

按键将是input文本的charCode表示forms。 请注意,如果由于按键没有“打印”文本,则此事件不会触发。

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

http://jsfiddle.net/LZs2D/1/将演示如何工作。;

KeyUp的行为与KeyDown类似。

这篇文章有一个Javascript中的keyCodes列表:

http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes