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


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 相关文章推荐
js获取单元格自定义属性值的代码(IE/Firefox)
Apr 05 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
Jul 09 Javascript
JS代码同步文本框内容的实例方法
Jul 12 Javascript
JS this作用域以及GET传输值过长的问题解决方法
Aug 06 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
May 22 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
Aug 08 Javascript
基于Javascript实现倒计时功能
Feb 22 Javascript
详解JS异步加载的三种方式
Mar 07 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
Aug 23 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
Sep 07 Javascript
sublime text配置node.js调试(图文教程)
Nov 23 Javascript
JavaScript字符串处理常见操作方法小结
Nov 15 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
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
2010/03/27 PHP
php使用curl发送json格式数据实例
2013/12/17 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
jQuery 移动端artEditor富文本编辑器
2016/01/11 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
Vue自定义事件(详解)
2017/08/19 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
Python读取一个目录下所有目录和文件的方法
2016/07/15 Python
Python之web模板应用
2017/12/26 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
学校施工安全责任书
2015/01/29 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android