上一篇
网络小说转换txt中文乱码
扫码枪使用的的场景不多,常规出现在仓库的录入与录出操作。混迹前端多年,几次与扫码枪功能擦肩而过。直至上周,扫码枪该是你的还是你。
扫码枪是一个输入设备,功能性很专一。将扫码枪视作简易版的键盘,页面全局监听onkeydown事件,即可获得扫码的值。由于扫码枪的值是逐字逐字读取字符,将字符转义成了类似ASCII的值,可用String.fromCharCode重新转义成对应的字符。
JSdocument.onkeydown = function(e) {
let code = '';
if(window.event) { // IE
code = e.keyCode
} else if(e.which) { // Netscape/Firefox/Opera
code = e.which
} else { //无法匹配该设置,请联系管理员
console.log('无法匹配该设置,请联系管理员');
return false;
}
if((code >= 48 && code <= 57) || (code >= 96 && code <= 105)){
//字母上方 数字键0-9 对应键码值 48-57
//数字键盘 数字键0-9 对应键码值 96-105
//数字键盘的键码值对应的字符有问题,所以手动调整键码值
var codes = {'48':48,'49':49,'50':50,'51':51,'52':52,'53':53,'54':54,'55':55,'56':56,'57':57,
'96':48,'97':49,'98':50,'99':51,'100':52,'101':53,'102':54,'103':55,'104':56,'105':57
};
let value = String.fromCharCode(codes[code]);
console.log('转义的值为:',value); //code值为48,输出的值为:0
} else if(code == 13 && code != "") { //13 为按键Enter
console.log('扫码结束');
}
}
扫码枪单纯只扫英文加数字的组合是没问题,万万没想到遇上互联网企业:不我全要。按着ASCII对照表转义字符,扩充了code的判断范围,发现特殊字符直接被「过渡」了。在无法获取想要的值时,怎么为?恰好发现,只要事先对输入框来个获取焦点事件,扫码后,值原样赋值给输入框。
JS$('#input-scan').focus();
事前你有多努力查找与研究扫码枪的转义字符,现在统统成了无用功。项目完成后,你兴冲冲找测试,测试给你当头一棒:扫码枪不出结果。原来市面上扫码枪产家很多,标准不统一,有的扫码枪默认有回车符,有的需要手动设置回车符。
在自测时,发现扫码枪莫名其妙出现中文现象,只要将输入法切换回英文即可。
※ 扫码枪的设置全在说明书上,说明书要好好保留。
最新评论Latest comments