(fixed、absolute) input输入框被Android浏览器软键盘遮挡的问题处理

如果input的父容器position为absolute/fixed,那么很可能会遇到input框点击后,会被弹出的系统软键盘给遮挡住,造成无法正常输入的后果。
一般有两种解决办法:

1 监听window的resize事件,进行相应的高度或位置调整。

var winHeight = $(window).height();
$(window).resize(function() {
    var thisHeight = $(this).height();
    if (winHeight - thisHeight > 50) {
        //软键盘弹出
        $('body').css('height', winHeight + 'px');
    } else {
        $('body').css('height', '100%');
    }
});

2. 监听input输入框获得焦点和失去焦点的事件,进行相应地处理。

function fixIMEOf(nodeId, topOrg, topNew) {
    var node = document.getElementById(nodeId);
    if(node!=null) {
        node.addEventListener('focusin', function() {
            if(!Q.isIOS()) {//iOS上一般不会有这个问题
            	//将input的父容器往上移动,移出遮挡区
                node.parentNode.style.top = topNew + 'px';
            }
        });
        node.addEventListener('focusout', function() {
            window.scrollTo(0,0);//解决iOS上,关闭软键盘后,页面可能不下移,造成页面底部留白的问题
            if(!Q.isIOS()) {
                node.parentNode.style.top = topOrg + 'px';
            }
        });
    }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值