完美解决手机网页中输入框被输入法遮挡的问题


Posted in Javascript onDecember 19, 2017

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

前提

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

以上这篇完美解决手机网页中输入框被输入法遮挡的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
Jan 22 Javascript
关于jquery input textare 事件绑定及用法学习
Apr 03 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
Dec 04 Javascript
js左右弹性滚动对联广告代码分享
Feb 19 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
Apr 15 Javascript
JQuery中层次选择器用法实例详解
May 18 Javascript
Vue组件BootPage实现简单的分页功能
Sep 12 Javascript
React复制到剪贴板的示例代码
Aug 22 Javascript
vue+axios 前端实现的常用拦截的代码示例
Aug 23 Javascript
如何从零开始手写Koa2框架
Mar 22 Javascript
javascript移动端 电子书 翻页效果实现代码
Sep 07 Javascript
JS Canvas接口和动画效果大全
Apr 29 Javascript
js解决软键盘遮挡输入框的问题分享
Dec 19 #Javascript
Angular2实现组件交互的方法分析
Dec 19 #Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
Dec 19 #Javascript
jquery自定义显示消息数量
Dec 19 #jQuery
基于Vue开发数字输入框组件
Dec 19 #Javascript
jquery实现侧边栏左右伸缩效果的示例
Dec 19 #jQuery
从setTimeout看js函数执行过程
Dec 19 #Javascript
You might like
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
使用PHP导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
python利用不到一百行代码实现一个小siri
2017/03/02 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
python调用百度语音REST API
2018/08/30 Python
python读取指定字节长度的文本方法
2019/08/27 Python
wxPython多个窗口的基本结构
2019/11/19 Python
pandas分组聚合详解
2020/04/10 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
技校生自我鉴定范文
2013/09/26 职场文书
葡萄牙语专业个人求职信
2013/12/10 职场文书
大学生写自荐信的技巧
2014/01/08 职场文书
机关领导查摆四风思想汇报
2014/09/13 职场文书
婚礼新人答谢词
2015/01/04 职场文书
升学宴学生致辞
2015/09/29 职场文书
《神奇的鸟岛》教学反思
2016/02/22 职场文书
2019银行竞聘书
2019/06/21 职场文书