keyCode
入力可能な文字に対応するJavaScript の範囲を知りたいだけです。または、バックスペース、エスケープ、コマンド、シフトなどの入力不可能な (制御) 文字の範囲を無視できるようにします。
私が尋ねる理由は、呼び出しString.fromCharCode()
がコントロールキーの奇妙な文字になることです。たとえば、左コマンドの場合は「[」、左矢印の場合は「%」を取得します。そのような奇妙さ。
keyCode
入力可能な文字に対応するJavaScript の範囲を知りたいだけです。または、バックスペース、エスケープ、コマンド、シフトなどの入力不可能な (制御) 文字の範囲を無視できるようにします。
私が尋ねる理由は、呼び出しString.fromCharCode()
がコントロールキーの奇妙な文字になることです。たとえば、左コマンドの場合は「[」、左矢印の場合は「%」を取得します。そのような奇妙さ。
Keydownは、変更なしで、押されたキーのkeyCodeを提供します。
$("#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値を使用するため、数字キー、文字キー、およびスペースバーのみに相関するキーコードがあります。
Keypressは、入力されたテキストのcharCode表現になります。キーを押した結果としてテキストが「印刷」されない場合、このイベントは発生しないことに注意してください。
$("#keypresser").keypress(function(e){
var charcode = e.charCode;
var char = String.fromCharCode(charcode);
console.log(char);
});
http://jsfiddle.net/LZs2D/1/これらがどのように機能するかを示します。
KeyUpはKeyDownと同様に動作します。
背景として、「keypress」イベントは、文字キーを押すたびにcharCodeプロパティを提供します。
Editor.addEventListener('keypress', function(event){
if (event.charCode) {
//// character key
console.log( String.fromCharCode(event.charCode) ); /// convert charCode to intended character.
} else {
//// control key
}
ただし、「keypress」イベントはすべてのキーストロークをキャプチャするわけではありません。「keypress」イベントの前にいくつかのキーが起動します。
対照的に、「keydown」イベントはすべてのキーストロークをキャプチャしますが、 charCodeプロパティはありません。では、それが文字キーかどうかはどうすればわかりますか? keyCodeが複数の範囲の下限と上限内にあるかどうかをすべてのキー ストロークでチェックすることは、最適な効率ではありません。ASCII 範囲外の文字にも問題があると思われます。
私のアプローチは、イベントの「キー」プロパティの長さを確認することです。「key」プロパティは、どのキーが押されたかを判断するための「keyCode」の代替です。コントロールキーの場合、"key" プロパティは説明的です(例: "rightArrow"、"F12"、"return" など)。文字キーの場合、文字キーの「key」プロパティは単なる文字(「a」、「A」、「~」、「\」など) です。したがって、すべての文字キーについて、「キー」プロパティの長さは 1 になります。一方、制御文字の長さは 1 より大きくなります。
Editor.addEventListener('keydown', function(event){
if (event.key.length == 1){
//// character key
} else {
//// control key
}
})
この記事には、次のリストがありkeyCodes
ますJavascript
。
http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes