Javascript 如何将字符转换为其键码?

Javascript 如何将字符转换为其键码?,javascript,jquery,Javascript,Jquery,如何将字符转换为其各自的键码 例如: a至65 b至66 c至67 d至68 您可以使用该功能来实现这一点 工作示例: 函数showKeyCode(){ var character=document.getElementById(“character”).value.substring(0,1); var code=document.getElementById(“字符”).value.charCodeAt(0); var msg=“\”“+字符+”字符的键代码为“+代码+”; 警报(msg

如何将字符转换为其各自的键码

例如:

  • a
    65
  • b
    66
  • c
    67
  • d
    68
您可以使用该功能来实现这一点

工作示例:

函数showKeyCode(){
var character=document.getElementById(“character”).value.substring(0,1);
var code=document.getElementById(“字符”).value.charCodeAt(0);
var msg=“\”“+字符+”字符的键代码为“+代码+”;
警报(msg);
}

找到一个keycode/ascii图表,并将其放入数组中,使数组['char']=keycode。这很乏味,但代码执行速度相当快。

您所说的“keyCode”是什么意思?不同的浏览器在
keyup
keydown
事件中具有不同的
keyCode
值,这些值不一定对应于相应字符的ASCII码。对于字母数字键,
keypress
事件将通过
charCode
属性在大多数浏览器中为您提供ASCII码。这是有用的

2015年9月更新


正如Jan在评论中指出的那样,
keyCode
最终将被上级物业取代。然而,浏览器对此还没有太多的支持。

正如评论中指出的那样:接受的答案是不正确的,因为它给出的是字符代码而不是键代码,这可能是不同的,例如
'a'。charCodeAt(0)==97
,而正确的键代码是
65

要仅转换[a-zA-Z]或[0-9]中的标准字符,可以使用下面的代码

但是,对于任何特殊键,如
Ö
#
或其他任何键,此都不能正常工作,因此我没有为它们找到一个好的解决方案。作为一种解决方法,可以使用类似的站点(它只捕获
onkeydown
事件并读取
event.keyCode
属性)

函数转换代码(目标){
var keyCode=target.value.toUpperCase().charCodeAt(0);
document.getElementById(“keyCodeSpan”).innerHTML=keyCode;
}


Keycode:
我在搜索这个问题时偶然发现了这个问题。我认为有标记的答案不是正确的答案。对于简单的字母A-Za-z,我使用以下内容:

function getKeyCode(char) {
  var keyCode = char.charCodeAt(0);
  if(keyCode > 90) {  // 90 is keyCode for 'z'
    return keyCode - 32;
  }
  return keyCode;
}

请注意,这仅适用于字符A-Z和A-Z。

这是一个带有一些键及其相应键码的对象:

{"0":48,"1":49,"2":50,"3":51,"4":52,"5":53,"6":54,"7":55,"8":56,"9":57,"d":68,"b":66,"a":65,"s":83,"i":73,"f":70,"k":75,"ß":219,"Dead":220,"+":187,"ü":186,"p":80,"o":79,"u":85,"z":90,"t":84,"r":82,"e":69,"w":87,"g":71,"h":72,"j":74,"l":76,"ö":192,"ä":222,"#":191,"y":89,"x":88,"c":67,"v":86,"n":78,"m":77,",":188,".":190,"-":189,"ArrowRight":39,"ArrowLeft":37,"ArrowUp":38,"ArrowDown":40,"PageDown":34,"Clear":12,"Home":36,"PageUp":33,"End":35,"Delete":46,"Insert":45,"Control":17,"AltGraph":18,"Meta":92,"Alt":18,"Shift":16,"CapsLock":20,"Tab":9,"Escape":27,"F1":112,"F2":113,";":188,":":190,"_":189,"'":191,"*":187,"Q":81,"W":87,"E":69,"R":82,"T":84,"Z":90,"S":83,"A":65,"D":68,"I":73,"U":85,"O":79,"Y":89,"X":88,"C":67,"F":70,"V":86,"G":71,"B":66,"H":72,"N":78,"J":74,"M":77,"K":75,"L":76,"P":80,"Ö":192,"Ä":222,"Ü":186,"!":49,"\"":50,"§":51,"$":52,"%":53,"&":54,"/":55,"(":56,")":57,"=":48,"?":219,"°":220}
如果某些键缺失或与浏览器不同,则可以使用以下功能:

let a = {}
document.addEventListener("keydown", ({key, keyCode}) => a[key] = keyCode);

只要把它复制到控制台,在键盘上砸你的头就行了。结果将存储在
a

我有一个字符,比如'a',我需要找到'a'的相应键码。我不确定这是否真的回答了问题-这取决于你所说的“键码”是什么意思。此函数为您提供字符代码,而不是密钥代码,这可能不是同一事物。要么在原始问题中必须更改术语密钥代码,要么这是一个错误的答案。当按下一个键时,你会得到一个键码,有点不对劲。。。。当我按键盘上的“.”(点)时,我的event.KeyCode=190。。。。如果我对你的代码“.”.charCodeAt(0)=46。。。为什么?这不能回答问题,因为它目前的措辞。如果你真的想把ASCII字符转换成键码,请参见Tim的答案参见@Jan:by,
char
已被删除
key
keyCode
好得多,但尚未得到广泛支持。从短期到中期来看,
keyCode
这两种代码将一直伴随着我们。顺便说一下,你的答案应该是公认的。被接受的答案根本不能回答这个问题。它回答了一个不同的问题,但不是被问到的“高级密钥属性”?!?我不认为使用
“ArrowDown”
“Enter”
等字符串比使用ASCII整数值更好,也不认为对任何人都有帮助的
keyCode
都不赞成。如果没有至少一种实用的、标准的方式将
“Enter”
转换为
13
并返回,这就毫无意义了!