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

九州编程
TA贡献1785条经验 获得超4个赞
不需要记录 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);
}
});
添加回答
举报
0/150
提交
取消