押されたキーの値を取得する方法がわかりません。私は現在持っています
$('#info_price').bind('keydown',function(evt){
alert(evt.keyCode);
しかし、「1」を返す代わりに1を押すと、「49」が返されます。
編集:キー「1」のASCIIコードを知っています。
最終的な目標は、人々が入力に数字だけを書き込めるようにすることです。だから私は非数字を検出し、それらを表示したくない。
コメントで言われているように、それはASCII
コードです。キャラクターとしてそれを取得するには、次のことができます。
alert(String.fromCharCode(evt.keyCode));
私のように今それをググる人のために
$('input').on('keydown', function(e) {
console.log(e.key);
});
これがあなたが扱うための完全に完成したコードです(私のものではありませんが、私はそれを使用しました):
http://www.selfcontained.us/2009/09/16/getting-keycode-values-in-javascript/
keycode = {
getKeyCode : function(e) {
var keycode = null;
if(window.event) {
keycode = window.event.keyCode;
}else if(e) {
keycode = e.which;
}
return keycode;
},
getKeyCodeValue : function(keyCode, shiftKey) {
shiftKey = shiftKey || false;
var value = null;
if(shiftKey === true) {
value = this.modifiedByShift[keyCode];
}else {
value = this.keyCodeMap[keyCode];
}
return value;
},
getValueByEvent : function(e) {
return this.getKeyCodeValue(this.getKeyCode(e), e.shiftKey);
},
keyCodeMap : {
8:"backspace", 9:"tab", 13:"return", 16:"shift", 17:"ctrl", 18:"alt", 19:"pausebreak", 20:"capslock", 27:"escape", 32:" ", 33:"pageup",
34:"pagedown", 35:"end", 36:"home", 37:"left", 38:"up", 39:"right", 40:"down", 43:"+", 44:"printscreen", 45:"insert", 46:"delete",
48:"0", 49:"1", 50:"2", 51:"3", 52:"4", 53:"5", 54:"6", 55:"7", 56:"8", 57:"9", 59:";",
61:"=", 65:"a", 66:"b", 67:"c", 68:"d", 69:"e", 70:"f", 71:"g", 72:"h", 73:"i", 74:"j", 75:"k", 76:"l",
77:"m", 78:"n", 79:"o", 80:"p", 81:"q", 82:"r", 83:"s", 84:"t", 85:"u", 86:"v", 87:"w", 88:"x", 89:"y", 90:"z",
96:"0", 97:"1", 98:"2", 99:"3", 100:"4", 101:"5", 102:"6", 103:"7", 104:"8", 105:"9",
106: "*", 107:"+", 109:"-", 110:".", 111: "/",
112:"f1", 113:"f2", 114:"f3", 115:"f4", 116:"f5", 117:"f6", 118:"f7", 119:"f8", 120:"f9", 121:"f10", 122:"f11", 123:"f12",
144:"numlock", 145:"scrolllock", 186:";", 187:"=", 188:",", 189:"-", 190:".", 191:"/", 192:"`", 219:"[", 220:"\\", 221:"]", 222:"'"
},
modifiedByShift : {
192:"~", 48:")", 49:"!", 50:"@", 51:"#", 52:"$", 53:"%", 54:"^", 55:"&", 56:"*", 57:"(", 109:"_", 61:"+",
219:"{", 221:"}", 220:"|", 59:":", 222:"\"", 188:"<", 189:">", 191:"?",
96:"insert", 97:"end", 98:"down", 99:"pagedown", 100:"left", 102:"right", 103:"home", 104:"up", 105:"pageup"
}
};
Javascriptでは、各キーは次のようにASCIIコードに関連付けられています
1-49
2-50
このように http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
したがって、keypressイベントに従ってこの値をマップする必要があります。
次のようにすべてのキー値を検出できます。
$('textarea').keydown(function(e) {
var order = e.which;
console.log(order);
});
ChromeとOpera今日は、イベントオブジェクトに読み取り専用プロパティdata
があります。
現在この機能は「ワーキングドラフト」であるとMDNに書かれています。
https://developer.mozilla.org/en-US/docs/Web/API/InputEvent/data
キーコードは、文字値に直接マップされません。代わりに、keypress
プロパティを提供するcharCode
イベントを確認する必要があります。次に、String.fromCharCode
を使用してそれを文字列に変換できます。
ASCII
の文字を取得するには:
String.fromCharCode();
ASCII
を文字列に変換します。