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


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 相关文章推荐
javascript getElementsByTagName
Jan 31 Javascript
Js中获取frames中的元素示例代码
Jul 30 Javascript
多种方法实现JS动态添加事件
Nov 01 Javascript
js的alert样式如何更改如背景颜色
Jan 22 Javascript
javascript中offset、client、scroll的属性总结
Aug 13 Javascript
js图片上传前预览功能(兼容所有浏览器)
Aug 24 Javascript
js 用于检测类数组对象的函数方法
May 02 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 Javascript
基于JavaScript实现抽奖系统
Jan 16 Javascript
element-ui upload组件多文件上传的示例代码
Oct 17 Javascript
微信小程序去除左上角返回键的实现方法
Mar 06 Javascript
Javascript中async与await的捕捉错误详解
Mar 03 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
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
PHP中extract()函数的定义和用法
2012/08/17 PHP
php自定义截取中文字符串-utf8版
2017/02/27 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
jquery 面包屑导航 具体实现
2013/06/05 Javascript
谷歌地图打不开的解决办法
2014/08/07 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
python使用opencv按一定间隔截取视频帧
2018/03/06 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
python打造爬虫代理池过程解析
2019/08/15 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
服装厂厂长岗位职责
2013/12/27 职场文书
好军嫂事迹材料
2014/01/15 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
离职报告格式
2014/11/04 职场文书
2014司机年终工作总结
2014/12/05 职场文书
2015新学期开学寄语
2015/02/26 职场文书
医院合作意向书范本
2015/05/08 职场文书
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技
python区块链持久化和命令行接口实现简版
2022/05/25 Python
讨论nginx location 顺序问题
2022/05/30 Servers
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL