是否可以从 onkeyup 获取密钥代码?

azo*_*ria 7 javascript events keycode event-handling onkeyup

我知道在使用 JavaScript 或 jQuery 时。我可以在对象上添加一个事件侦听器,以便在按下某个键时调用函数。

但是,如果函数是从 HTML 启动的,如下例所示:

function callMyFunction (importantothervalue) {
  //How can I get the keycode?
}
Run Code Online (Sandbox Code Playgroud)
<textarea onkeyup="callMyFunction(1);"></textarea>
<textarea onkeyup="callMyFunction(2);"></textarea>
<textarea onkeyup="callMyFunction(3);"></textarea>
Run Code Online (Sandbox Code Playgroud)

有没有办法从这个上下文中检索关键代码?或者如果我想获得关键代码,我是否总是需要制作一个事件处理程序?

有什么方法可以让我在生成的函数调用中包含重要的其他值,而无需对idclass属性中的信息进行编码并从那里提取它?

Mam*_*mun 8

您可以传递event给可以从中访问属性keyCode的函数。

但我建议您在使用前查看文档 KeyboardEvent.keyCode

如果可能,您应该避免使用它;它已被弃用一段时间。相反,您应该使用KeyboardEvent.code, 如果它已实现。不幸的是,某些浏览器仍然没有它,因此您必须小心确保使用所有目标浏览器都支持的浏览器。Google Chrome 和 Safari 已经实现了KeyboardEvent.keyIdentifier,它是在规范草案中定义的,但不是最终规范。

function callMyFunction (e, importantothervalue) {
  console.log(e.code);
  console.log(importantothervalue)
}
Run Code Online (Sandbox Code Playgroud)
<textarea onkeyup="callMyFunction(event, 1);"></textarea>
<textarea onkeyup="callMyFunction(event, 2);"></textarea>
<textarea onkeyup="callMyFunction(event, 3);"></textarea>
Run Code Online (Sandbox Code Playgroud)