需求:
做一個使用掃碼槍掃描胸牌二維碼簽到的功能
掃碼槍有一個設置,可以追加一個掃描完成的特殊字符,前端根據固定的特殊字符來判斷是否掃描完成,從而執行后面的操作
步驟:
- 掃描完二維碼以后,出現員工的標識id:sat-123
- 掃碼槍設置之后,追加 zltd_send_enter_,得到sat-123zltd_send_enter_
- 前端實時匹配zltd_send_enter_,確定掃描結束,進行操作
js:利用keyup方法,動態監聽實時輸入框內容,匹配掃描槍的結束標識字符
$('#search-input').keyup(function () {
var input=$(this)
if($('#type').val()==1){
//掃描查詢
if($(this).val().indexOf('zltd_send_enter_')>0){
var num=$(this).val().indexOf('zltd_send_enter_');
$(this).val($(this).val().slice(0,num))
if($(this).val().trim().length>0){
input.attr('readonly',true)
操作
}
}
}else{
//防抖 姓名查詢
clearTimeout(timer);
timer = setTimeout(function() {
SearchByName();
$(".status-box").hide();
}, 1000)
}
})
缺點:硬件依附性很高,在測試階段,由於掃描槍升級,導致結束標識符部分機器不出現,從而造成不能掃描的現象
解決:
由於之前,產品要求沒有觸發按鈕,所以通過監聽回車,keycode==13進行監聽
效果圖:

總結,以后掃碼槍問題,盡量在頁面設置按鈕,確保因為硬件而導致的問題出現
