将按键事件确定为按键输入

时间:2018-09-19 10:12:55

标签: javascript html events input browser

我正在尝试确定事件是按键输入事件还是非按键输入事件。 有没有办法在浏览器和操作系统中找到它?

示例:

  1. keyCode: 68-> D-> INPUT_EVENT
  2. keyCode: 65-> A-> INPUT_EVENT
  3. keyCode: 121-> F10-> NO_INPUT_EVENT
  4. keyCode: 27-> ESC-> NO_INPUT_EVENT

2 个答案:

答案 0 :(得分:0)

AFAIK没有做到这一点的简便方法。一种解决方案是检查event.key,它会返回一个字符串值,如此处所述:https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values 您可以将这些值列入黑名单或将输入键(即字母数字,标点符号等)列入白名单。无论采用哪种方法,都会有些混乱。

或者,如果您正在监听输入元素的击键,则可以将输入的先前值与最新值进行比较。如果值的长度已更改,则按下输入键。如果没有,则按下一个非输入键。

答案 1 :(得分:0)

我不确定是否有本机检查方法,但是您可以探索以下一些选项。

1)使用RegX来检查事件键(即event.key)是a到z之间的字母

2)检查event.code是否以字母开头

示例

假设我有这样的HTML元素:

<input type="text" id="mytxt">

和JavaScript:

const ele = document.getElementById('mytxt');
ele.addEventListener('keydown', event => {
if(event.code.startsWith('Key')){
    // valid key
    console.log('valid', event);
}
});

这应该可以帮助您获得所需的东西。