我正在尝试确定事件是按键输入事件还是非按键输入事件。 有没有办法在浏览器和操作系统中找到它?
示例:
keyCode: 68
-> D
-> INPUT_EVENT
keyCode: 65
-> A
-> INPUT_EVENT
keyCode: 121
-> F10
-> NO_INPUT_EVENT
keyCode: 27
-> ESC
-> NO_INPUT_EVENT
答案 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);
}
});
这应该可以帮助您获得所需的东西。