簡體   English   中英

監聽 keydown / keypress 事件並區分一位數和兩位數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM