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;
        };

 

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