按键到ASCII值

时间:2016-03-30 13:22:50

标签: javascript

我想进行击键并获得其ASCII表示。这包括按下SHIFT键时,即

  • “shift =”返回43
  • “a”返回97
  • “shift a”返回65

如果没有编写大量代码,有没有办法可以做到这一点?

编辑:

document.onkeypress = function () {
  console.log(event.which);
}

2 个答案:

答案 0 :(得分:4)

非常更少的代码,您可以这样做:

document.onkeypress = function () {
  console.log(event.which);
}

运行上述代码后检查您的控制台。

  

ps:上述代码的权重为 55个字符 ;)

更新:应该是onkeypress而不是onkeydown。谢谢Timo

答案 1 :(得分:0)

以下是7位ascii(又名us-ascii)中大写/小写“a”的十进制编码。

char    decimal    hexidecimal
A       65         41  
a       97         61

http://www.asciitable.com/

这就是事情。 keyCode!= ascii(必要)。记住许多不同的键盘,语言等。例如,我可以在德国物理键盘上选择(在软件中)us-english布局。那是在操作系统级别。

在浏览器中,除非另有说明,否则表单字符编码默认为页面编码(例如utf-8,iso-8859-1等)。

您可以使用以下代码段来了解按键事件中的内容。

document.onkeypress = function (e) {
    var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
    console.log('charCode: ' + charCode + 
                ' keyIdentifier: ' + e.keyIdentifier + 
                ' which: ' + e.which + 
                ' keyCode: ' + e.keyCode + 
                ' shiftKey: ' + e.shiftKey + 
                ' ctrlKey: ' + e.ctrlKey + 
                ' altKey: ' + e.altKey + 
                ' metaKey: ' + e.metaKey);
}

以下答案解释说,使用按键事件通常是获取字符代码而非密钥代码的唯一可靠方式。这似乎就是你所追求的。

JavaScript KeyCode vs CharCode

果然,使用onkeypress代替onkeydownonkeyup会给我65和97代表“A”和“a”。你需要更新你的javascript以忽略你不感兴趣的键的事件(即转移等)。

有趣的实验将是使用页面编码和7位ascii范围之外的字符,并查看此方法对于获取实际字符编码的效果。