H5 密碼 調起安全鍵盤 導致頁面底部出現留白

bug情況:使用米8的微信打開登錄頁,當輸入密碼時,會調起系統默認的小米安全鍵盤,偶發性出現鍵盤已收起,但頁面未落下,底部原輸入法位置變爲空白。如下圖: 

首先嚐試通用解決方式,如:

https://www.jianshu.com/p/c8f3a4036251

https://blog.csdn.net/a_small_insect/article/details/85162236

實踐上述類型的解決方式,仍不穩定,經多次測試發現,全部是在輸入密碼時,安全鍵盤頂起頁面導致頁面出現留白。

猜測是系統默認安全鍵盤的問題,無法感應到鍵盤收起,使頁面下滑。

在同事的vivo上也出現類似的問題,考慮到多種機型的兼容性問題,所以決定繞過input type="password"這種輸入框類型,仍使用type="text",調起普通鍵盤即可。

html頁面代碼爲:增加了type="hidden"用來存儲密碼

<input type="text" class="inputT" oninput="myPwd(this)" placeholder="請輸入密碼"/>
<input type="hidden"id="pwd" name="pwd"/>

js代碼:通過對第一個密碼輸入框綁定oninput事件,實時監測密碼格式並賦值給隱藏的密碼輸入框中

   function myPwd(e){
        var v= trim($(e).val());
        var pwdV = trim($("#pwd").val());
        var lastV = "";
        var totalV = "";
        var reg = /^[\u4e00-\u9fa5a-zA-Z0-9]+$/;
        if(v.length>pwdV.length){
            lastV = v.substr(v.length-1);
            if(reg.test(lastV)){
                totalV = pwdV + lastV +"";
            }else{
                totalV = pwdV;
            }
        }else if(v.length<pwdV.length){
            totalV = pwdV.substring(0,pwdV.length-1);
        }
        $("#pwd").val(totalV);
        var vDot = "";
        for(var i=0;i<totalV.length;i++){
            vDot += "•";
        }
        $(e).val(vDot);
    }

emmm...後來發現密碼框改爲text後,會出現另一個問題,全選密碼刪除或者替換等操作,無法即時更新密碼。後續再尋找更好的解決辦法吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章