[英]Listening for keydown / keypress events and differentiate between one and two digit numbers
我正在使用 eventListener 来检测我的 vue 应用程序中的数字选项:
window.addEventListener("keydown", function (e) {
switch (e.key) {
case 1:
// do stuff
break;
case 2:
// do other stuff
}
}
由于我有超过 9 个选项,我想知道最明智的方法是区分用户输入的是一位数还是两位数(例如1
vs 11
)?
最终调整了这篇博文中描述的解决方案,将所有击键推入一个数组,如果 1 秒后没有输入,则该数组被清除。
let keys = [];
let timeout = null;
window.addEventListener("keydown", function (e) {
keys.push(e.key);
clearTimeout(timeout);
timeout = setTimeout(function () {
let input = parseInt(keys.join(""));
switch (input) {
case 1:
// do stuff
break;
case 11:
// do other stuff
}
keys = [];
}, 1000);
});
switch 语句正在进行隐式类型转换,因为e.key
是一个字符串,而 switch case 说明符是数字。 如果您没有超过 35 个选项,则使用基数 36 位('1'-'9' 和 'a'-'z')可能是最简单的解决方案,同时按照以下行构造 switch 语句
switch( e.key.toLowerCase() {
case '1': ... break;
.
.
.
case 'z': ... break;
}
在告诉用户他们必须在 500 毫秒内击中第二个数字并等待很长时间才能识别出他们击中的第一个键之前,我会犹豫。 :-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.