dev*_*os1 54 javascript keycode
我只想知道keyCode与可键入字符对应的JavaScript 的范围; 或者,非退格(控制)字符的范围,如退格,转义,命令,移位等,所以我可以忽略它们.
我问的原因是调用String.fromCharCode()导致控制键的奇数字符.例如,左侧命令为"[",左箭头为"%".这样的怪异.
Shm*_*dty 83
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;
});
Run Code Online (Sandbox Code Playgroud)
只有数字键,字母键和空格键将具有与String.fromCharCode使用Unicode值相关的键码.
Keypress将是输入文本的charCode表示.请注意,如果由于按键没有"打印"文本,则不会触发此事件.
$("#keypresser").keypress(function(e){
var charcode = e.charCode;
var char = String.fromCharCode(charcode);
console.log(char);
});
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/LZs2D/1/将演示这些如何工作.
KeyUp的行为与KeyDown类似.
小智 17
我注意到所有长度为 1 ('A','B',number,symbol) 的字符都是可打印的,所以我只使用。我也将此解决方案用于非英文字符:
if(e.key.length==1)
print();
Run Code Online (Sandbox Code Playgroud)
iam*_*mio 15
只是为了背景,只要按下一个字符键,"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
}
Run Code Online (Sandbox Code Playgroud)
但是,"按键"事件不会捕获每次按键 - 在"按键"事件之前会触发几个按键.
相反,"keydown"事件将捕获每个击键,但它没有charCode属性.那么我们如何判断它是否是一个字符键呢?检查每个键击是否keyCode在多个范围的下限和上限内是不是最佳效率.我怀疑ASCII范围之外的字符也存在问题.
我的方法是检查事件"key"属性的长度."key"属性是"keyCode"的替代,用于确定按下了哪个键.对于控制键,"键"属性是描述性的(例如"rightArrow","F12","return"等).对于字符键,字符键的"键"属性只是字符(例如"a","A","〜","\"等).因此,对于每个字符键,"key"属性的长度将为1; 而控制字符的长度大于1.
Editor.addEventListener('keydown', function(event){
if (event.key.length == 1){
//// character key
} else {
//// control key
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28982 次 |
| 最近记录: |