HTML5 虚拟键盘出现挡住输入框的解决办法

1,问题描述

我们使用 H5 做移动 App,或者进行移动网站开发时。如果文本输入框在整个页面的下方,当我们点击输入框要输入文字时,系统弹出的虚拟键盘就会将输入框给挡住。(这个只有在Android 系统下会有这个问题,iOS 系统会自动将整个页面上移动。)

2,解决办法

我们可以借助元素的 scrollIntoViewIfNeeded() 方法。这个方法执行后如果当前元素在视口中不可见,则会滚动浏览器窗口或容器元素,最终让它可见。如果当前元素在视口中已经是可见的,这个方法什么也不做。

3,样例代码

这里使用了 jQuery 绑定了所有输入框(textinput、textarea)的点击事件,这样当输入框被点击后就调用它的 scrollIntoViewIfNeeded() 方法,保证输入框可见。(延迟400毫秒出现时有些 Android 手机键盘出现的比较慢)

//防止键盘把当前输入框给挡住
$$('input[type="text"],textarea').on('click', function () {
  var target = this;
  setTimeout(function(){
        target.scrollIntoViewIfNeeded();
        console.log('scrollIntoViewIfNeeded');
      },400);
});

最终效果:

时间: 2024-09-14 01:42:08

HTML5 虚拟键盘出现挡住输入框的解决办法的相关文章

ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)_javascript技巧

在使用ionic开发IOS系统微信的时候会有一个苦恼的问题,填写表单的时候键盘会挡住输入框,其实并不算什么大问题,只要用户输入一个字就可以立刻看见输入框了. 可惜的是,有些客户是不讲理的,他才不管这个问题,反正就是不行,所以在一天睡觉的时候突然惊醒,想出来这个方案. 我就不仔细讲代码了,直接上图 angular.module('MyApp') .directive('focusInput', ['$ionicScrollDelegate', '$window', '$timeout', '$io

win10 虚拟键盘-win 10 找开虚拟键盘 焦点在输入框内

问题描述 win 10 找开虚拟键盘 焦点在输入框内 我用的是winfrom技术,在win 10 系统下如何打开虚拟键盘.能不能手工调用系统的是虚拟键盘

Android 软键盘出现不适应的解决办法总结

Android 软键盘出现不适应的解决办法总结 前言: 很多写登录界面的开发者都会遇到一个问题:那就是在登录界面时,当你点击输入框时,下边的按钮有时会被输入框挡住,这个不利于用户的体验,所以很多人希望软键盘弹出时,也能把按钮挤上去.很多开发者想要监听键盘的状态,这无疑是一个很麻烦的做法. 我们可以在AndroidManifest.xml的Activity设置属性:Android:windowSoftInputMode = "adjustResize" ,软键盘弹出时,要对主窗口布局重新

键盘不能输入故障分析及解决办法

  在使用键盘的时候你会发现,有时候很新的键盘也会出现输入失灵的情况,其实键盘失灵,除了硬件故障的原因外,也许是软件搞的"鬼".下面小编告诉你键盘不能输入故障分析及解决办法. 鼠标再好,也需要键盘输入,一来它在某种场合下更快,二来鼠标无法代替键盘输入大量文字.但在有些时候会出现按键不灵的情况,敲下N多个键,显示屏上出现的情况却与你预设的大相径庭.是键盘坏了吗?先别忙着下结论,看看是不是这些原因: 现象一:输入汉字却打开对话框 在Word中输入文本的时候,本来用的好好的,谁知道忽然间键盘

Android开发之WebView输入框提示解决办法_Android

做基于WebView应用时,页面上有一个输入框,当输入的文字过多时,超过输入框的行数时,输入框能够滚动,这时间问题来了,输入的提示箭头会移动到输入框外,如何解决这个问题呢,查找chromium源码如下: void LoadIfNecessary(jobject context) { if (loaded_) return; loaded_ = true; TRACE_EVENT0("browser", "HandleResources::Create"); JNIE

IE中ocx控件的无模式对话框不接收方向键等键盘消息的问题的解决办法

在ocx控件中如果含有无模式对话框,那么当ocx在ie中显示时,往往接收不到 诸如tab,方向键和退格键.所有这些消息都被IE容器给截取了,对于这个问题,ms给出了解决方法: 首先:   int CMyActiveXCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)   {      if (COleControl::OnCreate(lpCreateStruct) == -1)         return -1;      OnActivateInPl

VS2010 剪切 复制文本时提示‘内存不足 能由于虚拟地址空间碎片过多导致’的解决办法

最近在使用VS2010 剪切 复制文本时 一直出现 '在此次程序运行时,可用内存容量不足,可能由于虚拟地址空间碎片过多导致,请稍后再试.'的提示,网上查了下,发现微软已经针对该问题发布了一个官方补丁,安装该补丁后可以解决该问题.    官方补丁下载: https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=29729 关于此事件的解释:       微软Visual Studio E

Android开发之WebView输入框提示解决办法

做基于WebView应用时,页面上有一个输入框,当输入的文字过多时,超过输入框的行数时,输入框能够滚动,这时间问题来了,输入的提示箭头会移动到输入框外,如何解决这个问题呢,查找chromium源码如下: void LoadIfNecessary(jobject context) { if (loaded_) return; loaded_ = true; TRACE_EVENT0("browser", "HandleResources::Create"); JNIE

win10升级失败提示银行网银键盘保护驱动 peckp.sys解决办法

既然是网银的相关文件保护导致无法升级系统我们只需要找到对应的文件然后删除即可了,具体操作步骤如下. 1.在系统中:定位到 C:\Windows\system32\drivers\PECKP 2.然后我们再进入之后我们点击删除就行了. 3.这样就可以继续升级win10了哦 好了删除成功之后这样我们再去升级win10系统你会发现不再在保护提示了.