js判断扫码枪扫描的值的解决办法

思路:监听页面上所有的keypress事件,根据扫码枪录入的速度跟正常人为输入的速度,也就是时间间隔对比。来判断是不是扫码枪录入。问题是判断第一个输入的值是人还是扫码枪。所以在下面处理中,不管人输入还是扫码枪,都会记录第一个值。通过判断第二个输入值是不扫码枪即可。是,就拼接code字符串,不是则清零并将当前值作为第一个输入值。

var code = "";
var lastTime,nextTime;
var lastCode,nextCode;
document.onkeypress = function(e) {
            nextCode = e.which;
            if(e.which === 13){
                if(code.length < 2){ //手动输入的时间不会让code的长度大于2,所以这里只会对扫码枪有效
                    return
                }
                lastTime = null;
                lastCode = null;
                code = '';
                return;
            }
            nextTime = new Date().getTime();
            if(!lastTime && !lastCode){
                code += e.key;
            }
            if(lastCode != null && lastTime != null && nextTime - lastTime <= 30) {
                code += e.key;
            }else if(lastCode != null && lastTime != null && nextTime - lastTime > 500) {//当扫码前有keypress事件时,防止首字缺失
                code = e.key;
            }
            lastCode = nextCode;
            lastTime = nextTime;
        };

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章