js如何判断扫码枪的输入?

扫码枪输入的时间间隔一般在8毫秒,偶尔会有16毫秒,而键盘输入一般都在80毫秒以上,因此我设定当输入间隔小于等于30毫秒时,判断为扫码枪输入,但是这段代码会丢失扫码枪扫描的第一个字符,如何判断第一个字符是扫码枪输入还是手动输入的?

https://img4.mukewang.com/5c75f58a0001eb6907800527.jpg

慕妹3146593
浏览 1841回答 1
1回答

九州编程

不需要记录 lastCode 啊,只需要在时间超出范围的时候重置 lastTime 和 code 就行了。如果码枪会输入回车,那就在 keyCode === 13 的时候使用 code 就行。这时候如果 code 的值多于1个字符就一定是码枪输入的,没有值就是手工输入的……如果需要记录手工输入的值,可以使用另一个变量比如 manualCode 来记录,在回车的时候如果 code 无值就从 manualCode 中截取后面若干字符出来,再适时把 manualCode 清空就好。示意(只有判断时间和拼接 code):let start = new Date();let code = "";$("#test").on("keydown", (e) => {    now = new Date();  if (now - start > 50) {      start = now;    code = String.fromCharCode(e.keyCode);  } else {      code += String.fromCharCode(e.keyCode);    console.log(code);  }});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript