// 扫码枪
var code = "";
var lastTime, nextTime;
var lastCode, nextCode;
document.onkeypress = function (e) {
if (window.event) { // IE
nextCode = e.keyCode;
} else if (e.which) { // Netscape/Firefox/Opera
nextCode = e.which;
}
if (nextCode === 13) {
if (code.length < 3) return; // 手动输入的时间不会让code的长度大于2,所以这里只会对扫码枪有
console.log(code); // 获取到扫码枪输入的内容,做别的操作
// 得到扫码枪的值,请求数据库,返回结果
$.ajax({
type: "POST",
url: "{:url('barcode_select')}",
data: {barcode: code},
dataType: "json",
success: function (res) {
if (res.code == 0){
var data = res.data
var shop_name = '';
for(var i = 0; i < (data.shopinfo).length; i++){
shop_name = data.shopinfo[i].name + '和' + shop_name
}
var shop_str = shop_name.substr(0, shop_name.length-1);
// 给搜索框赋值并搜索
$("#keys").attr("value", data.barcode);
$("#search").click();
// 拼接需要语音播报的值
var str = data.goods_name + data.color + data.size_name + '属于' +shop_str
// 调用语音播报的方法
speckText(str);
}else {
console.log('111')
}
},error: function (error) {
console.log(11)
}
});
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;
}
Article Detail
js监听页面扫码枪
// 扫码枪 var code = ""; var lastTime, nextTime; var lastCode, nextCode; document.o...
vue使用扫码枪,全局监听
全局监听扫码枪的扫码数据
在 src 下新建文件 scanCode.js,并在 main.js 引入即可
scanCode.js
main.js
增加扫码的vuex
在modules中新建文件scanCode.js,并在getters.js中增加scanString: state => state.scanCode.scanString
监听vuex中scanString的变化