javascript に奇妙な問題が発生しています。または、javascript が初めてであることが原因である可能性があります。
onkeypressの場合に何らかのアクションを許可しようとしていますが、英数字または特殊文字が押された場合のみです。これは私のコードです:
if(e.keyCode>=32 && e.keyCode<=126 ){
alert(e.keyCode);}
}
{,]>.
ここに何か欠けているような特殊文字キーを押しても警告しませんか?
javascript に奇妙な問題が発生しています。または、javascript が初めてであることが原因である可能性があります。
onkeypressの場合に何らかのアクションを許可しようとしていますが、英数字または特殊文字が押された場合のみです。これは私のコードです:
if(e.keyCode>=32 && e.keyCode<=126 ){
alert(e.keyCode);}
}
{,]>.
ここに何か欠けているような特殊文字キーを押しても警告しませんか?
which
ほとんどのブラウザとkeyCode
IEでのみプロパティを使用する必要があります。正しいイベントがありkeypress
ます。物理的なキーが押されるのではなく、入力された文字に関心がある場合にのみ発生します。
これが私のお気に入りのリファレンスです:http://unixpapa.com/js/key.html
document.onkeypress = function(e) {
e = e || window.event;
var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
var charTyped = String.fromCharCode(charCode);
alert("Character typed: " + charTyped);
};
keyCode
で ASCII インデックスが得られると想定しましたが、そうではありません。この仮定により、範囲基準は正しくありません。
イベントでは、
keypress
押されたキーの Unicode 値がkeyCode
またはcharCode
プロパティのいずれかに保存されますが、両方には保存されません。押されたキーが文字 (たとえば 'a') を生成するcharCode
場合、大文字と小文字を区別して、その文字のコードに設定されます。(つまりcharCode
、シフト キーが押されているかどうかが考慮されます)。それ以外の場合、押されたキーのコードは に格納されkeyCode
ます。
keyCode
keydown および keyup イベントで常に設定されます。このような場合、charCode は設定されません。
keyCode
キーがまたはに格納されているかどうかに関係なく、キーのコードを取得するにはcharCode
、 which プロパティをクエリします。特定のキーに関連付けられた keyCode 値のリストについては、例 7: イベント オブジェクト定数の表示の例を実行し、結果の HTML テーブルを表示します。
指示どおりに実行すると、「特別な」文字の一部が指定した範囲の制限外にあることがわかります。
ケビンもこの便利な表を指摘しましたが、キープレス処理にはより標準的なアプローチを 使用することをお勧めします。
keyCode
コンマ ( ) のは,
188 です。これが理由でしょうか?
http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
を使用する必要がありますwhich
。Firefox と Chrome の両方で動作するはずです。
これを試して:
document.onkeypress = function(e) {
console.log(e.keyCode + " -- " + e.which + " -- " + e.charCode);
if(e.which >= 32 && e.which <= 126 ){
alert(e.which);
}
};