扫码枪在日常生活中,经常可以看到,比较多的就是超市,网页中我们需要用获取扫码枪的值,就需要用到JavaScript来获取,后再执行操作。JavaScript获取扫码枪数据,扫码枪相当于键盘输入设备,输入一连串数字后加一个enter键。以下教大家怎么获取扫码枪的值:
1、放置文本框:首先放置文本输入框,用于接收扫码枪赋值(如果不想显示输入框,可以使用样式将其隐藏即可)
<input type="text" class="codevalue" >
2、聚焦文本框:设置定时聚焦文本框,每隔半秒执行一次聚焦,防止文本框失去焦点
setInterval(function() { $('.codevalue').focus() console.log('连接成功') }, 500); //1000毫秒等于1秒钟
3、文本框赋值:获取扫码枪的值,并赋值给文本框
var char = ""; //记录扫描枪输入的内容 var lastTime=null;//上次输入的时间 var nextTime=null;//这次输入的时间 var lastCode=null;//上次输入的键值(接收到的为ASCII值) var nextCode=null;//这次输入的键值(接收到的为ASCII值) $(document).keydown(function(event){ nextTime = new Date().getTime();//获取当前键入的时间 //判断是否输入了回车按钮,并确认是扫描枪键入的值 if (event.keyCode === 13 && char !== "" && nextTime - lastTime <= 30){ //把监听到的数据显示在我的文本框上 $(".codevalue").val(char); console.log('获取到值1--' +char) //清空数值,以便下一次扫描 char = ""; lastCode = null; lastTime = null; }else { //获取键入的键值 nextCode = event.keyCode; //如果是第一个字母你可以进行一些代码增强,我这里并没有处理,直接转换了 if(lastCode == null && lastTime == null){ //初始字母 char = String.fromCharCode(nextCode); //写入你要增强的代码。。。 // console.log('获取到值2--' +char) //判断是否是扫描枪键入的值 }else if(lastCode != null&&lastTime!= null && nextTime - lastTime <= 30){ //键入的值为ASCII码,要获取对应得值,需要转换一下 char += String.fromCharCode(nextCode);//存到char中,拼接上次的结果 } else{ //判断为手动输入,不做任何处理,数据保持为null即可 // alert("suck"); char = ""; lastTime=null; nextTime=null; lastCode=null; nextCode=null; } //lastCode、lastTime为中间变量,存储数据,让nextCode与nextTime可以存新数据 //nextCode与nextTime要存储新键入按钮的信息 lastCode = nextCode; lastTime = nextTime; } })
4、执行操作:监听文本的值,执行后置操作
$('.codevalue').change(function () { //获取选中下拉框的属性值 let val = $('.codevalue').val(); $('.codevalue').focus() //这里写逻辑代码 })
这就是简单的获取扫码枪值的方法,供大家参考。
文章评论(0)