[英]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.