移動端解決input框被輸入法擋住的問題

2021-10-06 12:23:44 字數 1094 閱讀 8749

有過移動端web開發經驗的人應該都會遇到這個問題,乙個input在頁面最底部或者偏下的位置,輸入時由於輸入法的彈出,在部分瀏覽器下由於不會自動計算window的高度,導致input被輸入法擋住。

本文的解決方式是利用scrolltop來解決,在input獲取焦點後,動態地設定body的高度並設定scrolltop到指定位置,這樣可以保證input會滾動到輸入法上方,失去焦點後再恢復原來的位置。

有兩種情況:

1、input在頁面最底部,後面沒有其他元素,這種情況我們可以獲取視窗的高度減去input的高度再減去一些空餘高度,可以得到應該滾動的高度,var scrollheight = $(window).height() - $(『input』).height() - 40,這種情況下這麼計算很合適,沒什麼問題。

2、然而有時候input不是在最底部,之後還有其他元素,如果按照上一種方式,當你滾動到input在螢幕中間或者上部的時候,由於滾動距離還是上一種方式獲取的,這個時候滾動距離會大於應該滾動的距離,導致input直接到頁面上方被隱藏了。

這個時候我們換種思路,只要想辦法獲取input到視窗的上邊框的距離即可,其他**都一樣,那麼可以這麼寫,var scrollheight = $(『input』).offset().top - $body.scrolltop() - 40,即input距離頁面頂部的高度減body滾動的高度獲得input距離視窗上方的高度。

"height: 800px;"

>

<

/div>

"text" style=

"width: 100%;height: 40px; "

>

"">

<

/script>

var scrollheight,

//應該滾動的距離

$body =$(

'body')$

('input').

on('focus'

,function()

,300);

}).on

('blur'

,function()

,300)}

)<

/script>

移動端,input輸入框被手機輸入法解決方案

當介面元素靠下時候的時候,input輸入框會被系統的鍵盤遮擋。我們可以讓介面向上移動一定距離去避免遮擋。money click function 300 基於jquery寫的事件。首先繫結觸發元素 input 框,scrollintoview alignwithtop 屬性滾動瀏覽器視窗或容器元素,...

input 禁止輸入法

即可禁止輸入法 js形式 active 代表輸入法為中文 inactive 代表輸入法為英文 auto 代表開啟輸入法 預設 disable 代表關閉輸入法 禁止input 貼上 input id vc class xinput maxlength 4 size 5 onkeydown fnkeyd...

移動端input「輸入框」常見問題及解決方法

1.ios中,輸入框獲得焦點時,頁面輸入框被遮蓋,定位的元素位置錯亂 當頁input存在於吸頂或者吸底元素中時,使用者點選輸入框,輸入法彈出後,fiexd失效,頁面中定位好的元素隨螢幕滾動。針對這個問題,我們一起來看下以下幾種方案 方案一 web api 介面 scrollintoview的應用,將...