Javascript 按下某个键时是否打印该键的名称?
按下某个键时是否可以获取该键的名称:Javascript 按下某个键时是否打印该键的名称?,javascript,keypress,dom-events,Javascript,Keypress,Dom Events,按下某个键时是否可以获取该键的名称: field.addEventListener("keydown", keyDown, false); function keyDown(event) { ... } 例如,当按下空格键时,我想得到字符串值:“space”,或者沿着这些行的某个东西。有没有一种简单的方法可以做到这一点,或者我需要一个库。您可以获取密钥码,但不能获取名称,因为名称因文化、语言等而异,JavaScript不提供任何方法来获取适合当前文化和语言的特定于文化和语言的名称 因此
field.addEventListener("keydown", keyDown, false);
function keyDown(event) {
...
}
例如,当按下空格键时,我想得到字符串值:“space”,或者沿着这些行的某个东西。有没有一种简单的方法可以做到这一点,或者我需要一个库。您可以获取密钥码,但不能获取名称,因为名称因文化、语言等而异,JavaScript不提供任何方法来获取适合当前文化和语言的特定于文化和语言的名称
因此,“按下键时是否有可能获得键名?”的答案是:不是来自JavaScript或浏览器内置的任何东西。您需要查找表和/或库。请注意,不同的键盘布局可能会给出不同的映射
keypress
事件为匹配字符提供字符代码(在event.charCode
上,可以像String.fromCharCode(event.charCode)
一样使用),但不是keydown
,因为并非所有的keydown
都生成字符(与其他按键不同),事实上,有时创建一个角色需要不止一个键
要获取密钥码,只需使用:
var keyCode = event.which || event.keyCode || 0;
这将使用event.which
如果它存在且真实,或者event.keyCode
如果它存在且真实,或者0
如果两者都不存在且真实。大多数浏览器使用,其中;许多版本的IE使用keyCode
由于键“name”可能包括修饰符,我要提到的是,事件上也有可用的修饰符标志:event.shiftKey
、event.ctrlKey
、event.altKey
、以及event.metaKey
您将看到人们告诉您,在执行上述操作后,可以使用String.fromCharCode(keyCode)
来获取密钥代码的字符。这只适用于一小部分键代码,因为键代码不是字符代码。两者之间有少量的重叠,这就是为什么人们认为你可以做到这一点。例如,如果您在键盘上按a键,则在我听说过的任何键盘上都可以按字符串。fromCharCode(keyCode)
将为您提供“a”
(然后您可以使用event.shiftKey
来决定是否将其小写)。但是,当你进入英语字母表中26个字母(可能是标准的十位数)以外的任何字符时,它会迅速下降。你可以使用并查找字符的名称。这就是您想要的吗?您可以使用event.key
或event.code
,例如:
document.body.addEventListener('keyup',函数(事件){
console.log(event.key);
console.log(事件代码);
});代码>可能重复的字段是什么?你能展示你的HTML和足够多的JavaScript吗?这样我们就可以看到你在做什么和使用什么了?您希望密钥名称显示在何处?可能与Im重复,但不查找密钥代码。我不会说它是重复的。我想我们可以从String.fromCharCode()
获取键盘值。问题是它将为a
和a
@Rajesh返回相同的值:键代码不是字符代码。所以这对一些人有效,但不是对所有人都有效。我不是在寻找钥匙码。所以我猜我将不得不使用一个图书馆this@user3024235:不幸的是,据我所知,是的。