Javascript判断扫码枪的输入,以及扫码后提交表单数据
程序员文章站
2022-06-14 22:08:15
...
条码扫描器其实就是一种输入设备,跟键盘一样。在控制台打印扫描过程,可以看出,扫描过程就像是在键盘上敲击相应的键,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;
}
};
上一篇: 魅族18X有纯白色版本:2021年可能是唯一一款纯白手机 成本极高
下一篇: 扫码枪