有過移動端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的應用,將...