我应该使用什么代替已过时的KeyboardEvent.which和KeyboardEvent.keyCode?

时间:2019-05-14 17:52:21

标签: javascript

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

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

但是,通过阅读键盘事件API here,我发现不推荐使用大多数常用的API,例如KeyboardEvent.whichKeyboardEvent.keyCode

尽管这些属性在大多数浏览器中仍然可用,但使用不推荐使用的API会让我感到不舒服。我应该怎么用呢?

1 个答案:

答案 0 :(得分:4)

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

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

要检查回车符(13),请使用

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

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