js读取扫码枪输入的数据
程序员文章站
2022-06-14 22:05:44
...
原理:扫码枪相当于键盘输入设备,输入一连串数字后加一个enter键。但在实际开发中需要区分是扫描枪输入还是键盘用户输入,区别在于扫码枪输入很快。
我们可以通过监听输入间隔时间,来判断到底是键盘输入还是扫描输入。
扫码枪输入的时间间隔一般在10毫秒以内,物理键盘输入要远大于这个数值,通常为80毫秒以上。因此,当输入间隔时间小于30毫秒时,判断为扫码枪输入,其余情况判断为键盘输入。
<script type="text/javascript">
window.onload = function (e) {
var code = "";
var lastTime, nextTime;
var lastCode, nextCode;
document.onkeypress = function (e) {
nextCode = e.which;
nextTime = new Date().getTime();
if (lastCode != null && lastTime != null && nextTime - lastTime <= 30) {//扫码枪
code += String.fromCharCode(lastCode);
} else if (lastCode != null && lastTime != null && nextTime - lastTime > 100) {//键盘输入
code = '';
}
lastCode = nextCode;
lastTime = nextTime;
}
this.onkeypress = function (e) {
// 键入Enter
// 判断 code 长度(这里就获取到条码值了,以下业务*发挥)
if (e.which == 13) {
alert(code)
code = "";
}
}
}
</script>
下一篇: Java学习笔记——面向对象(三)