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


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

 

掃描槍原理:模擬移動端輸入鍵盤,從而將獲取的內容賦值在獲取焦點的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 屬性 ,頁面初始化的時候執行 ,只執行一次

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM