js中判断input输入框是手动输入的,还是扫描输入的,
最好的方法是判断设备来源,但是我没有找到这个方法,自己写了一个,废话不多说上代码
(我的代码中不知道为什么用不了change事件,所以用的input,
然后扫描会自动触发一个回车,判断回车事件如果大于2秒,就为手动输入的.
还有一个问题,如果是粘贴上去的肯定会小于2秒,所以再加上οnpaste="return false",可以加到input上,如果整个表单都不允许粘贴,也可以放到<body>里面)
//记录手动输入开始时间
var startTime;
//记录手动输入开始次数,第二次不触发
var count = 0;
//条码扫描不允许手动输入
$("#inputBatchCod").on('input',function(){
count++;
if(count == 1){
startTime = new Date().getTime();
}
});
$('#inputBatchCode').keydown(function(e){
if(e.keyCode==13){
//记录手动输入结束时间
var endTime = new Date().getTime();
if(endTime - startTime > 2000){
alert("不允许手动输入!");
$("#inputBatchCode").val("");
$("#inputBatchCode").focus();
count = 0;
return;
}
}
});