微信,支付宝支付的等待用户扫码 input 判断是否是扫码堆输入 还是人为输入

今天做微信,支付宝支付的等待用户扫码时候

 

 防止人为输入

直接上代码

思路 

用输入字符的时间差判断是不是扫码堆输入的字符还是人为的输入  。机器输入18个字符100毫秒以内
//等待用户扫二维码 ,扫描后直接提交 vue
var timearr = [0,0];
$("#qrCodeId").on("input",function(e){
var v= e.delegateTarget.value;

//利用输入字符的时间差判断是不是扫描码输入的字符还是人为的输入 开始===
if(v.length%2 != 0){
timearr[0]=new Date().getTime();
}else{
timearr[1]=new Date().getTime();
}
if(v.length > 1 && Math.abs(timearr[1] - timearr[0]) > 25){
console.log("==清空==");
$("#qrCodeId").val('');
    }else if(v.length ==1){//如果只输入一个数字1.5秒后清空
setTimeout(function(){
var tqrVal = $("#qrCodeId");
if(tqrVal.length !=18){
$("#qrCodeId").val('');
}
console.log("<=11=>" + tqrVal.val());
},1500);

}
//利用输入字符的时间差判断是不是扫描堆输入的字符还是人为的输入 结束===

if("" != v && v.length == 18 && isNumber(v)){

console.log(v + "<==>" + v.length);
$('#order_btn').click();//当扫码后 二次提交
}
});

  

function isNumber(val){
        var regPos = /^\d{18}$/; //
        if(regPos.test(val)){
            return true;
        }else{
            return false;
        }
    }

  

posted @ 2021-10-12 15:47  agnils  阅读(295)  评论(0编辑  收藏  举报