移动端input获取焦点弹出输入框时影响fixed布局的问题

最近在做移动端项目的时候遇到的一个问题,在点击input获取焦点弹出输入框进行输入后,再次点击input输入框时,意外的事情发生了,

页面突然跳转到确定按钮跳转的页面了,刚开始以为是点击穿透导致的,朝着这个方向一直没有等到解决。。。

经过反复研究,发现第二次点击input 时,上面有一个隐形的按钮,这是怎么回事,确定按钮怎么就跑到上面去了呢,原来是由于最外层

使用了fixed布局,而第一次点击input获取焦点时,移动端默认弹出的输入框会将fixed布局的元素顶上去。

解决办法:

1、如果使用的元素不是必须使用fixed布局的话可以不使用;

2、元素必须使用fixed布局时,在input获得焦点时将元素的position设置为static,失去焦点时再将元素的position设置为fixed;

$(‘#phone‘).bind(‘focus‘,function(){
    $(‘.bottom_fix‘).css(‘position‘,‘static‘);
}).bind(‘blur‘,function(){
        $(‘.bottom_fix‘).css({‘position‘:‘fixed‘,‘bottom‘:‘0‘});
});

  

原文地址:https://www.cnblogs.com/yanganglanyu/p/10444094.html

时间: 2024-11-05 13:26:01

移动端input获取焦点弹出输入框时影响fixed布局的问题的相关文章

解决IOS safari在input focus弹出输入法时不支持position fixed的问题

该文章为转载 我们在做移动web应用的时候,常常习惯于使用position:fixed把一个input框作为提问或者搜索框固定在页面底部.但在IOS的safari和webview中,对position:fixed的支持不是很好(在IOS5之前甚至还不支持position:fixed).我遇到的其中一个问题就是,在iOS6+环境下,input focus弹出输入法的时候,设置了position fixed的input框浮在页面上了,而不是吸附在软键盘上.效果如图(图片来源于网上): 而Androi

Android学习—解决界面弹出输入框时Tabhost上移的问题

在一个Tabhost页签界面,里面有多个EditText可以输入,但是每次文本框获得焦点弹出系统键盘时,位于底部的Tab被顶到中间去了,而且还会导致输入无效: 对于这种问题,可以通过下面的设置解决: 修改AndroidManifest.xml文件,在Tabhost所在的Activity中加入:android:windowSoftInputMode="adjustPan|stateVisible" 如下: <activity android:name="com.yag.U

ios下input focus弹出软键盘造成fixed元素位置移位

正常状态下 input focus软键盘弹出时 问题描述: 头部结构fixed,滚动到下部内容区域,input.textarea等focus弹出软键盘时,头部位置偏移被居中(该问题ios7 beta3已修复),当软键盘关闭时,头部结构位置又恢复正常 安卓手机下,fixed表现要比ios好,不会出现此问题 然而在移动端里,基本上所有手机,页面滚动的时候,任何js都不会执行,所以寻找css的方法(且js方法比较消耗性能) 各类大网站的解决方法:一般是页面上避免悬挂元素,或者有悬挂元素时,避免产生软键

移动端在有弹出层时如何禁止底层的滚动 (实现表层滑动的时候,底层禁止滑动,表层隐藏的时候,底层依然可以滑动);

要实现以上图示的功能;自然想到zepto里的swipeUp方法,但是用了以后发现,有的移动端浏览器,不起作用,有的浏览器起作用,但是底层也会跟着滑动; 于是加一下代码: document.addEventListener('touchmove', function (event) { event.preventDefault(); }, false); 加了以后上滑表层的页面,底层的页面不会跟着滚动了,但是表层页面隐藏以后,底层的页面就滑不动了; 于是下面一段代码就出现了,完美解决; docum

移动端 软键盘 弹出时 影响布局

移动端 软键盘 弹出时 会影响布局 1)前段时间作的移动端页面,因为高度只有1页所以用了height:100%;width:100%; ios下点击输入框弹出软键盘时,布局没有大影响. 当输入框可能被软键盘压到时,在一部分安卓下却出了问题,华为自带浏览器和UC会有布局上的问题. 原因可能是因为,软键盘弹出时,改变了height,使height:100%,不能达到原来的高度. 解决办法: $(document).ready(function () { $('body').height($('bod

Android点击列表后弹出输入框,所点击项自动滚动到输入框上方(类似微信的评论)

Android点击列表后弹出输入框,所点击项自动滚动到输入框上方 使用微信的朋友圈会发现,点击某一条评论后输入框会弹出来,然后所点击的那一项会自动地滚动到输入框上方的位置,这样如果开始所点击的评论在屏幕很下方的话,就不会被输入框遮住,虽然微信这一点在我的MX2频繁点几次后滚动的位置就完全错误了,但据说在有些机型上效果还不错,还有其他地方可能会有类似的需求,比如登录时软键盘可能会把登录按钮遮住. 要实现这个功能需要注意的地方主要有两点: 什么时候进行滚动操作,以及有可能还需要在输入框消失时回滚回去

javascript关闭弹出窗口时刷新父窗口和居中显示弹出窗

居中显示用到了moveTO()方法: 关闭弹出窗时刷新父窗口用到了window.opener方法: 父窗口代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="弹出窗口.aspx.cs" Inherits="弹出窗口" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti

弹出键盘时,让table向上移动

弹出键盘时,让table向上移动 #pragma mark UITextFieldDelegate - (BOOL)textFieldShouldBeginEditing: (UITextField *)textField { [UIView beginAnimations: nil context: nil]; self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 280, 0); NSIndexPath *indexPath = [NSIn

C#如何弹出输入框

在C#中,进行windows窗体应用程序编程的时候,经常需要弹出输入框,输入密码,输入文本之类的.然而,C#中没有直接弹出输入框的语句,MessageBox只能显示一段消息而不能输入.我们需要调用Microsoft.VisualBasic,使用VB中的inputbox,实现弹出输入框的功能. 1.菜单栏,选择[项目]:然后在弹出的菜单中选择[添加引用] 2.弹出“添加引用”的窗口,找到名称为Microsoft.VisualBasic的组件,选择它并点击[确定] 3.使用命名空间Microsoft