js获取扫码枪输入数据的方法

编程入门 行业动态 更新时间:2024-10-07 06:42:23

js获取扫码枪输入数据的<a href=https://www.elefans.com/category/jswz/34/1771314.html style=方法"/>

js获取扫码枪输入数据的方法

扫码枪相当于键盘输入设备,输入一连串数字后加一个enter键。

但在实际开发中需要区分是扫描枪输入还是键盘用户输入,区别在于扫码枪输入很快。

let code = '';let lastTime, nextTime;let lastCode, nextCode;window.document.onkeypress = (e) => {if (window.event) { // IEnextCode = e.keyCode;} else if (e.which) { // Netscape/Firefox/OperanextCode = e.which;}if (nextCode === 13) {if (code.length < 3) return; // 手动输入的时间不会让code的长度大于2,所以这里只会对扫码枪有console.log(code); // 获取到扫码枪输入的内容,做别的操作code = '';lastCode = '';lastTime = '';return;}nextTime = new Date().getTime();if (!lastTime && !lastCode) {code += e.key;} if (lastCode && lastTime && nextTime - lastTime > 30) { // 当扫码前有keypress事件时,防止首字缺失code = e.key;} else if (lastCode && lastTime) {code += e.key;}lastCode = nextCode;lastTime = nextTime;}

下面看下js获取USB扫码枪数据的代码:

原理:

扫码枪扫描到的条形码每一位会触发一次onkeydown事件

比如扫描条码位‘1234567890’的条形码,会连续执行10次onkeydown事件

条码扫描到最后一位,会直接触发Enter

需要引入jQuery,我这里用的是vue

window.onload = (e)=> {document.onkeydown = (e)=> {let nextCode,nextTime = '';let lastTime = this.lastTime;let code = this.code;if (window.event) {// IEnextCode = e.keyCode} else if (e.which) {// Netscape/Firefox/OperanextCode = e.which}nextTime = new Date().getTime();//字母上方 数字键0-9 对应键码值 48-57; 数字键盘 数字键0-9 对应键码值 96-105if((nextCode>=48&&nextCode<=57) || (nextCode>=96&&nextCode<=105)){let codes = {'48':48,'49':49,'50':50,'51':51,'52':52,'53':53,'54':54,'55':55,'56':56,'57':57,'96':48,'97':49,'98':50,'99':51,'100':52,'101':53,'102':54,'103':55,'104':56,'105':57};nextCode = codes[nextCode];nextTime = new Date().getTime();}// 第二次输入延迟两秒,删除之前的数据重新计算if(nextTime && lastTime && nextTime-lastTime>2000){code = String.fromCharCode(nextCode);}else{code += String.fromCharCode(nextCode)}// 保存数据this.nextCode = nextCode;this.lastTime = nextTime;this.code = code;// 键入Enterif(e.which == 13) {// 判断 code 长度(这里就获取到条码值了,以下业务自由发挥)code = $.trim(code)if (code.length == 13) {this.$message('A类条码:' + code);} else if (code.length == 23) {this.$message('B类条码:' + code);} else if (code.length == 0) {this.$message('请输入条码');} else{this.$message('条码不合法:' + code);}//键入回车务必清空code值this.code = ''return false;}}
}

更多推荐

js获取扫码枪输入数据的方法

本文发布于:2024-02-06 03:13:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1745956.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方法   数据   js   扫码枪

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!