扫码枪在日常生活中,经常可以看到,比较多的就是超市,网页中我们需要用获取扫码枪的值,就需要用到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()  
//这里写逻辑代码
})

这就是简单的获取扫码枪值的方法,供大家参考。