天天看點

移動端 掃描槍輸入不彈出鍵盤

目前有一個需求,使用者可以手寫輸入 也可以 掃描槍輸入,使用安卓的一個機器,進行掃描二維碼 讀取内容 并查找展示

掃描槍原理:模拟移動端輸入鍵盤,進而将擷取的内容指派在擷取焦點的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 屬性 ,頁面初始化的時候執行 ,隻執行一次