如何将char转换为其键码?

San*_*osh 34 javascript jquery javascript-events

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

例如:

  • a65
  • b66
  • c67
  • d68

rah*_*hul 36

您可以使用该charCodeAt功能来实现此目的.

工作范例:

function showKeyCode () {
    var character = document.getElementById("character").value.substring(0, 1);
    var code = document.getElementById("character").value.charCodeAt(0);
    var msg = "The Key Code for the \"" + character + "\" character is " + code + ".";
    alert(msg);
}
Run Code Online (Sandbox Code Playgroud)
<input type="text" id="character" size="15">
<input type="button" value="Show Key Code" onclick="showKeyCode();">
Run Code Online (Sandbox Code Playgroud)

  • 我不确定这是否真的能回答这个问题 - 这取决于你所说的"keycode".此函数为您提供字符代码,而不是密钥代码,这可能不是同一个东西. (37认同)
  • 必须在原始问题中更改术语键码,否则这是错误的答案.密码是你从e.which - 当按下一个键时得到的. (6认同)
  • 出现问题......当我按下"." (点)我的键盘上我的event.KeyCode = 190 ....如果我做你的代码".".charCodeAt(0)= 46 ...为什么? (2认同)

Tim*_*own 13

你是什​​么意思"keyCode"?不同的浏览器具有不同的keyCodekeyupkeydown事件,这些值不一定对应于相应字符的ASCII码.对于字母数字键,keypress事件将通过charCodewhich属性在大多数浏览器中为您提供ASCII代码.这个页面很有用.

2015年9月更新

正如Jan在评论中指出的那样,keyCode最终将被优越的key财产所取代.但是,目前还没有太多的浏览器支持.

  • “优越的关键属性”?!?我不明白如何使用像 `"ArrowDown"` 或 `"Enter"` 这样的字符串应该比使用 ASCII 整数值更好,或者不推荐使用 `keyCode` 和 `which` 应该对任何人都有帮助. 如果没有至少一种实用的标准方法将 `"Enter"` 转换为 `13` 并返回,那么这毫无意义! (2认同)

Tei*_*iem 10

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

\n
{"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,"\xc3\x9f":219,"Dead":220,"+":187,"\xc3\xbc":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,"\xc3\xb6":192,"\xc3\xa4":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,"\xc3\x96":192,"\xc3\x84":222,"\xc3\x9c":186,"!":49,"\\"":50,"\xc2\xa7":51,"$":52,"%":53,"&":54,"/":55,"(":56,")":57,"=":48,"?":219,"\xc2\xb0":220}\n
Run Code Online (Sandbox Code Playgroud)\n

如果某些按键丢失或与您的浏览器不同,您可以使用以下功能:

\n
let a = {}\ndocument.addEventListener("keydown", ({key, keyCode}) => a[key] = keyCode);\n
Run Code Online (Sandbox Code Playgroud)\n

只需将其复制到控制台并在键盘上敲击即可。结果将存储在a

\n


klu*_*ues 5

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

为了仅转换来自 [a-zA-Z] 或数字 [0-9]标准字符,可以使用以下代码。

但是,这对于任何特殊键(.Ö#或任何其他键)都无法正常工作,而且我没有为它们找到好的解决方案。作为一种解决方法,可以使用像http://keycode.info/这样的站点(它只捕获onkeydown事件并读取event.keyCode属性)。

function convertToKeyCode(target) {
    var keyCode = target.value.toUpperCase().charCodeAt(0);
    document.getElementById("keyCodeSpan").innerHTML = keyCode;
}
Run Code Online (Sandbox Code Playgroud)
<input type="text" oninput="convertToKeyCode(this)" size="1" maxlength="1">
<span>Keycode: </span><span id="keyCodeSpan"></span>
Run Code Online (Sandbox Code Playgroud)