Javascript判斷掃碼槍的輸入,以及掃碼后提交表單數據


條碼掃描器其實就是一種輸入設備,跟鍵盤一樣。在控制台打印掃描過程,可以看出,掃描過程就像是在鍵盤上敲擊相應的鍵,keycode和鍵盤是一一對應的,只是輸入速度(間隔時間)比物理鍵盤輸入要快得多。我們可以通過監聽輸入間隔時間,來判斷到底是鍵盤輸入還是掃描輸入。

掃碼槍輸入的時間間隔一般在10毫秒以內,物理鍵盤輸入要遠大於這個數值,通常為80毫秒以上。因此,當輸入間隔時間小於30毫秒時,判斷為掃碼槍輸入,其余情況判斷為鍵盤輸入。
let lastTime = null;
let nextTime = null;
let code = '';
document.onkeydown = function (e) {
  let keycode = e.keyCode || e.which || e.charCode;
  nextTime = new Date();
  if (keycode === 13) {
    if (lastTime && (nextTime - lastTime < 30)) {
      // 掃碼槍
      // do something
    } else {
      // 鍵盤
      // do something
    }
    code = '';
    lastTime = null;
    e.preventDefault();
  } else {
    if (!lastTime) {
      code = String.fromCharCode(keycode);
    } else {
      if (nextTime - lastTime < 30) {
        code += String.fromCharCode(keycode);
      } else {
        code = '';
      }
    }
    lastTime = nextTime;
  }
};

 轉載:https://www.jianshu.com/p/3019858e3cad


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM