运用场景:扫码枪发商品快递时录入发货快递单号到对应产品订单明细
准备:1/商品编号条形码,2/顺丰发货快递单号条形码
原理:扫码枪和键盘输入是一个效果,支持一次扫码输入13个字符,js的onkeydown事件监听,键盘输入事件,获取商品条形码号ajax弹窗打开对应商品明细页面,光标默认停到快递号文本框,再次扫码快递单号。完成录入。
效果:减少人工录入,提高效率。
部分源码
准备:1/商品编号条形码,2/顺丰发货快递单号条形码
原理:扫码枪和键盘输入是一个效果,支持一次扫码输入13个字符,js的onkeydown事件监听,键盘输入事件,获取商品条形码号ajax弹窗打开对应商品明细页面,光标默认停到快递号文本框,再次扫码快递单号。完成录入。
效果:减少人工录入,提高效率。
部分源码
<script type="text/javascript">
//条形码接收放入数组中
var chars = new Array();
var number_regex = /^\d$/;
document.onkeydown = function (event) {
var e = event || window.event || arguments.callee.caller.arguments[0];
var tag = e.target.tagName.toLowerCase();
if(tag != 'input' && tag != 'textarea'){
var code = e.keyCode;
if(code == 13){
if(checkShipNo(chars)){
$("#barcode_delivery_link").click();
}
chars = [];
}
var chr = String.fromCharCode(code);
if (number_regex.test(chr)){
chars.push(chr);
}else{
chars = [];
}
}
};
// 往原有的url中添加条形码参数,ajax请求
$("#barcode_delivery_link").on('ajax:beforeSend', function(event, xhr, settings){
settings.url += '?ship_no=' + chars.join('');
chars = [];
});
function checkShipNo(checkArray){
validateArray = checkArray.concat().reverse();
var validate = validateArray.shift();
sum = 0;
for(var i = 0; i < validateArray.length; i++){
sum += validateArray[i] * (i + 1);
}
return validate == sum % 10 ? true : false;
}
</script>