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


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 ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
Oct 20 Javascript
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
Oct 22 Javascript
获取中文字符串的实际长度代码
Jun 05 Javascript
浅谈JavaScript的内置对象和浏览器对象
Jun 03 Javascript
BootStrap 附加导航组件
Jul 22 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
Aug 24 Javascript
postman+json+springmvc测试批量添加实例
Mar 31 Javascript
layui table 参数设置方法
Aug 14 Javascript
小程序指纹验证的实现代码
Dec 04 Javascript
如何基于JavaScript判断图片是否加载完成
Dec 28 Javascript
js实现select下拉框选择
Jan 11 Javascript
js+css实现扇形导航效果
Aug 18 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
php cli配置文件问题分析
2015/10/15 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
JavaScript知识点整理
2015/12/09 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
Python3.x版本中新的字符串格式化方法
2015/04/24 Python
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
python 实现识别图片上的数字
2019/07/30 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
优秀学生干部推荐材料
2014/02/03 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
上学路上观后感
2015/06/16 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
python中__slots__节约内存的具体做法
2021/07/04 Python