国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

完美解決手機網頁中輸入框被輸入法遮擋的問題

2024-05-06 16:41:29
字體:
來源:轉載
供稿:網友

之前要做一個彈出對話框,填寫信息,發現在手機上看的時候,較后的輸入框在填寫信息時,輸入框被輸入法遮擋,只能盲填。

前提

1.彈出的對話框用display:fixed定位的

2.對話框大小固定

解決辦法

css部分

(dlg-top與dlg-bottom為對話框的類,用于確定對話框的定位方式)

.dlg-top{ position: fixed; top:100px; left:10%;}.dlg-bottom{ position: fixed; bottom:0px; left:10%;}

js部分

“deliver-dlg”為對話框的類

//彈出對話框時,綁定的事件//綁定輸入框獲取焦點事件$(".deliver-dlg input,.deliver-dlg textarea").focus(function(){ var input=$(this); //在輸入框獲取焦點后,窗口改變的話,執行事件 $(window).resize(function(){  //判斷當前輸入框是否在可視窗口之外(下面)  if($(window).height()-(input.offset().top+input.offset().height-document.body.scrollTop)<0){   //對話框定位方式改為bottom   $(".deliver-dlg").removeClass("dlg-top").addClass("dlg-bottom");  }  else{   $(".deliver-dlg").removeClass("dlg-bottom").addClass("dlg-top");  } });});//取消對話框時,取消事件綁定$(".deliver-dlg input").unbind();$(".deliver-dlg").removeClass("dlg-bottom").addClass("dlg-top");$(window).unbind();

思路解析

簡單點說就是改變對話框的定位方式,在默認情況下用top,在有輸入法的時候,根據情況用bottom。 在input獲取焦點且窗口重設的時候(即輸入框彈出),注意先綁定input的focus事件,再綁定窗口改變的事件,因為在手機上,是input獲取焦點,輸入框才彈出導致窗口大小改變。

再窗口大小改變事件發生之后,判斷輸入框是否被遮(即不在窗口的可視范圍內),采用的辦法是用可視窗口的高度($(window).height())是否大于輸入框的底部(input.offset().top+input.offset().height-document.body.scrollTop)因為input.offset().top表示的是元素離文檔頭部的位置,要算元素離可視窗口頭部的位置,可以再減去滾動條滾動了多少。以上是判斷元素是否在可視窗口底部。

以上這篇完美解決手機網頁中輸入框被輸入法遮擋的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 衢州市| 大连市| 潢川县| 宣恩县| 宝坻区| 咸丰县| 昌乐县| 南川市| 封丘县| 锦屏县| 晴隆县| 仙居县| 加查县| 肃南| 商都县| 眉山市| 五常市| 五华县| 教育| 奎屯市| 曲沃县| 时尚| 永胜县| 色达县| 尼玛县| 靖边县| 周口市| 靖州| 娄底市| 通辽市| 绩溪县| 靖西县| 葫芦岛市| 古蔺县| 澳门| 阿坝| 海丰县| 乾安县| 高平市| 林西县| 武宁县|