按下键时是否可以获取键的名称:
field.addEventListener("keydown", keyDown, false);
function keyDown(event) {
...
}
例如,当按空格键时,我想得到字符串值:" space"或沿着这些行的东西。有没有一种简单的方法可以做到这一点,还是我需要一个库。
答案 0 :(得分:7)
您可以获取密码,但不能获取名称,因为名称因文化,语言等而异,并且JavaScript无法提供任何获取文化和语言的方法 - 适合当前文化和语言的特定名称。
答案是"是否可以在按下时获取密钥的名称?"是:不是内置于JavaScript或浏览器中的任何内容。您需要查找表和/或库。请注意,不同的键盘布局可能会提供不同的映射。
keypress
事件会为匹配字符提供匹配字符的字符代码(在event.charCode
上,您可以使用String.fromCharCode(event.charCode)
),但不是keydown
,因为并非所有keydown
都生成字符(与其他按键不同),实际上有时需要多个keydown
来创建字符。
要获取密钥代码,只需使用:
var keyCode = event.which || event.keyCode || 0;
如果它存在且真实,则使用event.which
;如果它存在且真实,则使用event.keyCode
;如果不存在和真实,则使用0
。{p}大多数浏览器使用which
;许多版本的IE使用keyCode
。
因为一个键"名称"可能会包含修饰符,我还提到事件中还有可用的修饰符标记:event.shiftKey
,event.ctrlKey
,event.altKey
和event.metaKey
。
您会看到有人告诉您在执行上述操作后可以使用String.fromCharCode(keyCode)
来获取密钥代码的字符。这仅适用于一小组密钥代码,因为密钥代码不是字符代码。两者之间存在少量重叠,这就是为什么人们认为你可以做到这一点。例如,如果您按键盘上的 a ,在任何键盘上,我听说String.fromCharCode(keyCode)
会给您"A"
(然后您可以使用{{ 1}}决定是否使其成为小写)。但是当你进入英语字母表的26个字母以外的任何字母时(或者可能是标准的十位数字),它会迅速 。
答案 1 :(得分:1)
您可以使用this file并查找角色的名称。这是你想要的吗?
答案 2 :(得分:1)
您可以使用event.key
或event.code
,例如:
document.body.addEventListener("keyup", function(event) {
console.log(event.key);
console.log(event.code);
});
因此,如果我们假设用户按下键“ k”,则预期输出将为:k
和KeyK
。
按“ Alt”,预期输出将是:Alt
和AltLeft
。
然而,keypress
的情况有所不同,因为它不会检测到任何特殊键,例如ALT,CTRL,SHIFT,META等...,但仍会检测英文字母和数字。