一、JS获取扫码设备扫描二维码或者条形码得到的值
扫码设备在扫码二维码或者条形码时,相当于将获取到的值连续并快速的按下对应的键盘按键。
看自己想要怎么获取扫码后的值,一个是实时监听,一个是通过主动触发
1、通过jQuery监听keydown事件
var scanList = "";
var scanTimer = "";
// 只获取数字,每个数字有两个对应按键值是因为有数字小键盘,数字小键盘和字母键盘上的数字对应的按键值是不一样的
var keyData = { 48:"0",96:"0",49:"1",97:"1",50:"2",98:"2",51:"3",99:"3",52:"4",100:"4",53:"5",101:"5",54:"6",102:"6",55:"7",103:"7",56:"8",104:"8",57:"9",105:"9"};
// 监听keydown事件
$(document).keydown(function (event) {
var key = event.keyCode;
// 屏蔽其他按键,只要keyData中有的按键
if (!keyData.hasOwnProperty(key)) {
return;
}
// 如果有定时器就不创建新的定时器
if (!scanTimer) {
scanList = "";
// 启动定时器
scanTimer = window.setInterval("checkScan()",500);
}
scanList += keyData[key];
});
// 扫码设备扫码后会在很短的时间内将内容输出,这里只接收0.5秒内输入的内容,防止人为因素
function checkScan(){// 0.5秒结束
// 可以加自己对scanList的判断逻辑,防止是人为按键触发
if (scanList.length != 22) {
scanList = "";
}
// 清除定时器
clearTimeout(scanTimer);
scanTimer = null;
if(scanList != ""){
// 自己对扫码得到内容的处理
alert(codeScan);
// 处理完成后取消键盘监听事件
$(document).unbind();
}
2、通过把焦点放在文本框后在扫码获取
因为扫码设备扫码后获取到值后相当于依次并快速的按下键盘,所以可以通过点击扫码按钮将焦点设置在文本框中,然后扫码,此时获取到的值会打在文本框中。
// 可以在点击扫码后启动定时器,获取CODESCANED的值
var active = document.activeElement;// 获取当前焦点
var scan = document.getElementById("CODESCANED");
if(active.id != 'CODESCANED'){
// CODESCANED是文本框ID
scan.focus();// 设置焦点
}
scan.onblur = function(){// 当失去焦点后重新设置焦点
if (判断是否正在扫码,可以通过变量控制或者其他方法) {
// 重新获取焦点
scan.focus();
}
};