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

标签 javascript keycode

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

我问的原因是调用 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。

关于javascript - 确定 JavaScript e.keyCode 是否为可打印(非控制)字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12467240/

相关文章:

javascript - addEventListener 在 Angular 选择中不起作用

Android:软键盘上 "?123"键的KeyEvent.KEYCODE是什么?

java - Android中KeyEvent.KEYCODE_BACK的疑问

java - 在 Java (OSX) 中设置三个按钮加速键热键

javascript - 不推荐使用 KeyboardEvent.keyCode。这在实践中意味着什么?

javascript - Chrome 分析器上的 "Unsupported non-primitive compare"

javascript - Emberjs - 我需要一个可以更改变量值的操作

javascript - IE e.keyCode - 如何区分&符号和向上箭头?

javascript - 语法错误 : missing ) after formal parameters

javascript - 上传图片到火力地堡