首页 > 解决方案 > 我应该使用什么来代替已弃用的 KeyboardEvent.which 和 KeyboardEvent.keyCode?

问题描述

作为现代化/优化计划的一部分,我正在尝试将 jQuery 从现有代码库中剥离出来。enter当用户在文本输入中按下键时,有一些地方需要发生一些事情。以前,我们通过以下方式实现了这一点:

$("#loginInput").on("keypress", e => {
   if (e.which == 13) {
     // if key pressed was enter...
     login();
   }
});

但是,通过阅读此处的键盘事件 API,我发现大多数常用 API 已被弃用,例如KeyboardEvent.whichKeyboardEvent.keyCode.

尽管这些属性在大多数浏览器中仍然可用,但我对使用已弃用的 API 感到不舒服。我应该改用什么?

标签: javascript

解决方案


我想你想要event.key。它似乎得到了广泛的支持。

“key”属性给出了用户与键盘交互所反映的字符,同时考虑了所有涉及的元键(shift、ctrl 等)。

因此,要检查回车符 (13),您可以使用

if (event.key === "Enter") {
  // enter key was pressed
}

编辑更新以反映一个令人惊讶的事实,即当该键触发事件时,“key”属性设置为字符串“Enter”。


推荐阅读