js手机键盘遮挡_原生JS解决 安卓机 input/textarea输入键盘遮盖输入框

问题描述:

h5开发时,input/textarea输入框在安卓手机中,获取焦点时,键盘会直接在页面上方弹出,如果你的输入框刚好在页面下方就会被弹出的键盘遮挡,也无法向上滑动使其显示,如下图所示:

c1d1d98a555c6f576280b4bcdd47dd9f.png

6c9a52b69eff74a31c869d4e2e79e306.png

解决思路:

0.首先需要判断当前机型是否为安卓机(避免影响IOS端)

//判断是否是安卓还是ios

isAndroid() {

let u = navigator.userAgent;

let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器

let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

return isAndroid === true;

}

1.使其可以向上滑动显示:

"页面根节点"设置style样式:

html代码布局

...

这里用textarea举例 input也是同样的

2.当输入框获得焦点时,让页面滚动条至最底部:

//安卓键盘遮挡输入

onFocusAddr() {

if (!isAndroid()) return;//判断是否是安卓机

setTimeout(() => {

let div = document.getElementById("root");//获取根节点

div.scrollTop = div.scrollHeight;//滚动条至底(这里没有写的很严谨,需要减去输入框自身高offsetHeight,效果都一样)

}, 500);//键盘拉起的延迟时间

}

问题解决,效果如下图:

aa6c5844da91eff4e543a32472f57c26.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值