目前有一個需求,使用者可以手寫輸入 也可以 掃描槍輸入,使用安卓的一個機器,進行掃描二維碼 讀取内容 并查找展示
掃描槍原理:模拟移動端輸入鍵盤,進而将擷取的内容指派在擷取焦點的input上 (掃到東西的話會自動在焦點處輸出)
因為是模拟輸入鍵盤 實際上 掃描槍輸入完成以後,會自動吊起移動端小鍵盤,現在就如何在掃描的時候 不掉起小鍵盤 ,隻進行指派。
解決方法:
1.利用input readonly屬性
試驗了一下,當input有readonly屬性的時候,即使擷取焦點,也不會吊起小鍵盤
利用這個特性,在擷取到内容以後,給input添加readonly屬性,使得小鍵盤不出現,進行操作以後 再講屬性移除,這樣既擷取了焦點,又沒有吊起小鍵盤,之後還可以進行掃碼操作
if($(this).val().trim().length>0){
擷取到内容以後,給input添加readonly屬性
input.attr('readonly',true)
time1=setTimeout(function() {
$.ajax({
type: "POST",
url: "/yili/signin/byqrcode",
beforeSend:function(){
clearTimeout(time1);
},
data: “”,
success: function (data) {
},
complete: function () {
查詢結束後,給input移除readonly屬性,此時焦點依然在Input上,可以直接進行下一次操作
input.attr('readonly',false)
},
error: function () {
console.log("送出失敗!");
}
});
}, 1000)
}
其他普及:
掃碼槍輸入的間隔大概在15-60毫秒,然後手動輸入的100-200毫秒之間
input輸入事件,包括 keydown 鍵盤(剛剛)按下,keypress 鍵盤(已經)按下,keyup 鍵盤擡起,
keydown,在按鍵剛剛被按下,但值還沒有寫入input
keypress 已經按下并且值已經輸入到文本框
keyup 就是鍵盤彈起 可以利用keyup來判斷input輸入的内容,因為已經是輸入完成
初始化擷取焦點 而又不掉起鍵盤 可以為input添加 autofocus 屬性 ,頁面初始化的時候執行 ,隻執行一次