最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

解决输入框被输入法遮挡的问题

来源:懂视网 责编:小OO 时间:2020-11-27 19:36:25
文档

解决输入框被输入法遮挡的问题

之前要做一个弹出对话框,填写信息,发现在手机上看的时候,较后的输入框在填写信息时,输入框被输入法遮挡,只能盲填。前提;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”为对话框的类。
推荐度:
导读之前要做一个弹出对话框,填写信息,发现在手机上看的时候,较后的输入框在填写信息时,输入框被输入法遮挡,只能盲填。前提;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”为对话框的类。

下面我就为大家分享一篇完美解决手机网页中输入框被输入法遮挡的问题,具有很好的参考价值,希望对大家有所帮助。

之前要做一个弹出对话框,填写信息,发现在手机上看的时候,较后的输入框在填写信息时,输入框被输入法遮挡,只能盲填。

前提

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表示的是元素离文档头部的位置,要算元素离可视窗口头部的位置,可以再减去滚动条滚动了多少。以上是判断元素是否在可视窗口底部。

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在JS中如何控制鼠标拒绝点击按钮

使用JS如何获得当前时间差

在js中如何对url实施对象化管理

在JavaScript中如何使用Generator的方法

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

解决输入框被输入法遮挡的问题

之前要做一个弹出对话框,填写信息,发现在手机上看的时候,较后的输入框在填写信息时,输入框被输入法遮挡,只能盲填。前提;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”为对话框的类。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top