工作中遇到如下需求,点击输入框弹出自定义弹窗,输入框是input标:

但是在移动端,input会默认触发手机的虚拟键盘,如何阻止手机虚拟键盘弹起呢?目前我试过有两个方案,一个是给input添加 readonly 属性,另一个就是在input事件处理方法前面添加一句 document.activeElement.blur()  。

readonly

使用readonly方式来阻止虚拟键盘弹出应该是最简单最优雅的方式了。readonly 属性规定输入字段为只读。只读字段是不能修改的。不过,用户仍然可以使用 tab 键切换到该字段,还可以选中或拷贝其文本。

值得一提的是它的取值,只要声明了readonly属性,不管取什么值都可以,比如readonly=""readonly="readonly"readonly="abc"都是一样的

优点:简单
缺点:在iOS的Safari中无效(未做更多情况测试)

document.activeElement.blur()

这是个什么玩意儿?document.activeElement是一个Web API接口。MDN上的解释是:它返回当前页面中获得焦点的元素,也就是说,如果此时用户按下了键盘上某个键,会在该元素上触发键盘事件,该属性是只读的。

document.activeElement属性始终会引用DOM中当前获得了焦点的元素。元素获得焦点的方式有用户输入(通常是按Tab键)、在代码中调用focus()方法和页面加载。

它里面有很多方法,在浏览器控制台查看,可以看到有很都方法:

MDN上还展示了一个有意思的示例, 看这里

那么document.activeElement.blur()为什么可以阻止虚拟键盘弹出呢?原因是:当你点击input的时候,document.activeElement获得了DOM中被聚焦的元素,也就是你点击的input,而调用.blur()方法,blur我相信大家都知道吧,就是取消聚焦。获得被聚焦的元素然后强制blur以达到没有聚焦的样子、、、感觉绕了。

优点:支持Android、iOS
缺点:需要添加额外的JS代码

这句代码加在什么地方?加入有如下HTML

1
2
3
4
5
<div class="calendar">
<div>
<input type="text" id="datePicker" class="date_picker" placeholder="点击选择入住日期"/>
</div>
</div>

那么这句JS加在事件处理方法中

1
2
3
$("#datePicker").focus(function(){
document.activeElement.blur();
});

总结

就当前需求来说,用document.activeElement.blur()确实是在绕弯子,直接使用readonly是最佳方案。但是document.activeElement很强大,可以做很多事。

小技巧|H5禁止手机虚拟键盘弹出相关推荐

  1. php手机网页弹出软键盘代码,Html5页面上如何禁止手机虚拟键盘弹出

    工作中遇到如下需求,点击输入框弹出自定义弹窗,输入框是input标签: 但是在移动端,input会默认触发手机的虚拟键盘,如何阻止手机虚拟键盘弹起呢?目前我试过有两个方案,一个是给input添加rea ...

  2. 【JS篇】禁止手机默认键盘弹出

    开发过程中由于业务需求,需要通过点击input弹出自定义弹层,但input获得焦点时,会默认弹出手机默认键盘,此时就需要屏蔽手机默认键盘的弹出,尝试过使用readonly属性,但使用该属性也会同时屏蔽 ...

  3. html5手机底部输入框,html5 虚拟键盘弹出挡住底部的输入框解决方案

    问题描述: 我们使用 h5 做移动网站开发时,如果文本框在页面的下方,当输入信息弹出的软键盘会将输入框挡住(Android 会有这个问题,IOS会自动将整个页面上移),IOS中软键盘关闭后,页面上移的 ...

  4. js防止安卓手机软键盘弹出挤压页面导致变形的方法

    h5防止安卓手机软键盘弹出挤压页面导致变形的方法 输入框定位在底部,手机端打开,输入框聚焦后软键盘打开为什么会瞬间自动关闭呢? 先看看问题: 1.原来是这样的: 2.在苹果手机里面是正常的: 3.到了 ...

  5. Android页面监听虚拟键盘弹出、收起

    js 移动端关于页面布局,如果底部有 position: fixed 的盒子, 又有input,当软键盘弹出收起都会影响页面布局. 如图: 页面这时候Android可以监听resize事件,代码如下, ...

  6. android 输入法键盘弹出与否判断和输入法键盘弹出时将界面滚动到指定位置

    本文章重点谈下如何实现,结合以下demo,来谈谈输入法键盘弹出与否判断和输入法键盘弹出时将界面滚动到指定位置 1.先看下demo的场景,这是个登录界面,因为界面元素比较多,导致在输入法弹出时,下面的登 ...

  7. (小技巧)h5 手机键盘弹出收起的处理

    本文转载于思否社区专栏:随笔 作者:hzzly 前言:前段时间也是应项目的需求开始了 h5 移动端的折腾之旅,在目前中台的基础上扩展了两个 ToC 移动端项目,下面就是在 h5 移动端表单页面键盘弹出 ...

  8. 【vant ui 双向输入框禁止手机键盘弹出】

    vant ui 双向输入框禁止手机键盘弹出 <van-field readOnly @focus="noBomBox" :formatter="formatterN ...

  9. 安卓手机键盘弹出导致h5页面错乱

    安卓手机键盘弹出导致h5页面错乱 特别是有表单的h5,点击input输入信息的时候提交的按钮.以及定位到下方的图片都会被挤上来. 解决方法如下: <div class="bg_img& ...

  10. android dialog隐藏虚拟按键,关于此框架在BottomSheetDialogFragment使用时,华为手机底部虚拟按键弹出与隐藏时输入框位置不贴键盘...

    我这边试过还是不行,而且我们ui是要dialog不全屏的,下面附上代码 public void onStart() { super.onStart(); Dialog dialog = getDial ...

最新文章

  1. python爬虫框架实例项目_python爬虫框架scrapy实例详解
  2. 托管数据中心vs.云计算:保障关键任务数据安全
  3. Windows下用PIP安装scipy出现 no lapack/blas resources found
  4. Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作
  5. 处理对象的多种状态及其相互转换——状态模式
  6. linux删除、读取文件原理
  7. python输出文本内容_python 打印文件里的内容
  8. redhat下svn服务器搭建
  9. 官方实锤!程序员都是农民工?
  10. 什么是单反相机?什么叫数码相机?
  11. 使用Leopard MVC
  12. Python读取并打印bin文件
  13. 运维工程师是桥的护栏_高速公路护栏有哪几种类型?
  14. 什么是TPS,什么是QPS?
  15. 闪讯 padavan 配置
  16. Quick Viewer 快速浏览器
  17. Hook技术之消息拦截(Windows Hook )
  18. Veusz教程(1)——导入数据
  19. 用户层调用nl80211的例子
  20. 给文本框添加灰色提示文字

热门文章

  1. 今日头条安卓_考察今日头条总部—字节跳动
  2. 日语开发java自我介绍,用日语自我介绍,这些你一定会用到
  3. 谱聚类算法入门教程(三)—— 求f^TLf的最小值
  4. 大数据分析及工具应用总结
  5. Windows影子账户创立
  6. python编程期末试题_大学moocPython编程基础期末考试答案
  7. Windows10+CentOS 7 双系统安装
  8. JAVA ZIP解压出现不可预料的压缩文件末端
  9. 计算机网络——SMTP
  10. Layui 表格分页控件