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

 更新时间:2017年12月19日 14:37:51   作者:小魔仙Cool  
下面小编就为大家分享一篇完美解决手机网页中输入框被输入法遮挡的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

前提

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判断网页是否为手机打开,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • js判断元素是否隐藏的方法

    js判断元素是否隐藏的方法

    这篇文章主要介绍了js判断元素是否隐藏的方法,需要的朋友可以参考下
    2014-06-06
  • 基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理

    基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理

    这篇文章主要介绍了基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理的相关资料,小编认为非常具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-05-05
  • JavaScript实现京东秒杀效果

    JavaScript实现京东秒杀效果

    这篇文章主要为大家详细介绍了JavaScript实现京东秒杀效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • echarts学习之如何给饼图中间添加文字

    echarts学习之如何给饼图中间添加文字

    这篇文章主要介绍了echarts学习之如何给饼图中间添加文字问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • js表数据排序 sort table data

    js表数据排序 sort table data

    对于表格的排序,是很不错的一个功能,方便用户快速的分析一些数据。
    2009-02-02
  • 利用JS判断字符串是否含有数字与特殊字符的方法小结

    利用JS判断字符串是否含有数字与特殊字符的方法小结

    在我们日常工作的时候,利用javaScript判断一个字符串中是否包括有数字和"-",在一些表单提交的地方,这是比较有用的常规判断,这里收集有几种不同的方法,最后还将简要介绍下isNAN函数的使用方法和例子,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-11-11
  • JS实现面向对象继承的5种方式分析

    JS实现面向对象继承的5种方式分析

    这篇文章主要介绍了JS实现面向对象继承的5种方式,结合实例形式分析了JavaScript面向对象继承功能的5种常见实现方法原理与操作技巧,需要的朋友可以参考下
    2018-07-07
  • JS解决url传值出现中文乱码的另类办法

    JS解决url传值出现中文乱码的另类办法

    为什么用表单的方式就可以传递中文,而URL的方式就不行了呢?非得用URL传值的方式才能解决问题吗?这里我想到了动态表单,何不用它来解决呢
    2013-04-04
  • 很棒的js Tab选项卡切换效果

    很棒的js Tab选项卡切换效果

    这篇文章主要介绍了很棒的js Tab选项卡切换效果,简单的选项卡切换特效,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论