完美解決手機(jī)網(wǎng)頁中輸入框被輸入法遮擋的問題
之前要做一個(gè)彈出對(duì)話框,填寫信息,發(fā)現(xiàn)在手機(jī)上看的時(shí)候,較后的輸入框在填寫信息時(shí),輸入框被輸入法遮擋,只能盲填。
前提
1.彈出的對(duì)話框用display:fixed定位的
2.對(duì)話框大小固定
解決辦法
css部分
(dlg-top與dlg-bottom為對(duì)話框的類,用于確定對(duì)話框的定位方式)
.dlg-top{
position: fixed;
top:100px;
left:10%;
}
.dlg-bottom{
position: fixed;
bottom:0px;
left:10%;
}
js部分
“deliver-dlg”為對(duì)話框的類
//彈出對(duì)話框時(shí),綁定的事件
//綁定輸入框獲取焦點(diǎn)事件
$(".deliver-dlg input,.deliver-dlg textarea").focus(function(){
var input=$(this);
//在輸入框獲取焦點(diǎn)后,窗口改變的話,執(zhí)行事件
$(window).resize(function(){
//判斷當(dāng)前輸入框是否在可視窗口之外(下面)
if($(window).height()-(input.offset().top+input.offset().height-document.body.scrollTop)<0){
//對(duì)話框定位方式改為bottom
$(".deliver-dlg").removeClass("dlg-top").addClass("dlg-bottom");
}
else{
$(".deliver-dlg").removeClass("dlg-bottom").addClass("dlg-top");
}
});
});
//取消對(duì)話框時(shí),取消事件綁定
$(".deliver-dlg input").unbind();
$(".deliver-dlg").removeClass("dlg-bottom").addClass("dlg-top");
$(window).unbind();
思路解析
簡(jiǎn)單點(diǎn)說就是改變對(duì)話框的定位方式,在默認(rèn)情況下用top,在有輸入法的時(shí)候,根據(jù)情況用bottom。 在input獲取焦點(diǎn)且窗口重設(shè)的時(shí)候(即輸入框彈出),注意先綁定input的focus事件,再綁定窗口改變的事件,因?yàn)樵谑謾C(jī)上,是input獲取焦點(diǎn),輸入框才彈出導(dǎo)致窗口大小改變。
再窗口大小改變事件發(fā)生之后,判斷輸入框是否被遮(即不在窗口的可視范圍內(nèi)),采用的辦法是用可視窗口的高度($(window).height())是否大于輸入框的底部(input.offset().top+input.offset().height-document.body.scrollTop)因?yàn)閕nput.offset().top表示的是元素離文檔頭部的位置,要算元素離可視窗口頭部的位置,可以再減去滾動(dòng)條滾動(dòng)了多少。以上是判斷元素是否在可視窗口底部。
以上這篇完美解決手機(jī)網(wǎng)頁中輸入框被輸入法遮擋的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
js實(shí)現(xiàn)購(gòu)物車商品數(shù)量加減
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)購(gòu)物車商品數(shù)量加減,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
JavaScript繼承的特性與實(shí)踐應(yīng)用深入詳解
這篇文章主要介紹了JavaScript繼承的特性與實(shí)踐應(yīng)用,結(jié)合實(shí)例形式較為深入的分析了javascript繼承相關(guān)概念、特性、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2018-12-12
javascript中的 object 和 function小結(jié)
JavaScript的面向?qū)ο笫腔谠蔚?,所有?duì)象都有一條屬于自己的原型鏈。Object與Function可能很多看Object instanceof Function , Function instanceof Object都為true而迷惑,所以首先看下對(duì)象的實(shí)例。2016-08-08
在layui中l(wèi)ayer彈出層點(diǎn)擊事件無效的解決方法
今天小編就為大家分享一篇在layui中l(wèi)ayer彈出層點(diǎn)擊事件無效的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09
JavaScript調(diào)用ajax獲取文本文件內(nèi)容實(shí)現(xiàn)代碼
這篇文章主要介紹了JavaScript調(diào)用ajax獲取文本文件內(nèi)容的方法,需要的朋友可以參考下2014-03-03
js點(diǎn)擊頁面其它地方將某個(gè)顯示的DIV隱藏
今天一朋友問我 點(diǎn)擊一按鈕彈出一個(gè)DIV,然后要求點(diǎn)擊頁面其它地方隱藏這個(gè)DIV2012-07-07

