Html5页面上如何禁止手机虚拟键盘弹出


Posted in HTML / CSS onMarch 19, 2020

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

Html5页面上如何禁止手机虚拟键盘弹出

但是在移动端,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()方法和页面加载。

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

Html5页面上如何禁止手机虚拟键盘弹出

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

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

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

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

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

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

总结

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

到此这篇关于Html5页面上如何禁止手机虚拟键盘弹出的文章就介绍到这了,更多相关Html5手机键盘弹出内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
CSS3 滤镜 webkit-filter详细介绍及使用方法
Dec 27 HTML / CSS
CSS3实现自定义Checkbox特效实例代码
Apr 24 HTML / CSS
CSS实现聊天气泡效果
Apr 26 HTML / CSS
html5本地存储_动力节点Java学院整理
Jul 12 HTML / CSS
使用html2canvas实现浏览器截图的示例代码
Jan 26 HTML / CSS
Html5内唤醒百度、高德APP的实现示例
May 20 HTML / CSS
HTML5之SVG 2D入门10—滤镜的定义及使用
Jan 30 HTML / CSS
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
Aug 02 HTML / CSS
HTML5中判断用户是否正在浏览页面的方法
May 03 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
Jan 09 HTML / CSS
HTML5实现应用程序缓存(Application Cache)
Jun 16 HTML / CSS
CSS实现背景图片全屏铺满自适应的3种方式
Jul 07 HTML / CSS
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
Mar 18 #HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
Mar 17 #HTML / CSS
canvas实现手机的手势解锁的步骤详细
Mar 16 #HTML / CSS
HTML利用九宫格原理进行网页布局
Mar 13 #HTML / CSS
html5默认气泡修改的代码详解
Mar 13 #HTML / CSS
canvas如何实现多张图片编辑的图片编辑器
Mar 10 #HTML / CSS
HTML5表单验证特性(知识点小结)
Mar 10 #HTML / CSS
You might like
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
无数据库的详细域名查询程序PHP版(5)
2006/10/09 PHP
关于IIS php调用com组件的权限问题
2012/01/11 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
php指定函数参数默认值示例代码
2013/12/04 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
PHP反射基础知识回顾
2020/09/10 PHP
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
JavaScript中对循环语句的优化技巧深入探讨
2014/06/06 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
Python中单例模式总结
2018/02/20 Python
python将字符串转换成json的方法小结
2019/07/09 Python
车辆安全检查制度
2014/01/12 职场文书
社区志愿者活动方案
2014/08/18 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
小学生自我评价100字(15篇)
2014/09/18 职场文书
2014年就业工作总结
2014/11/26 职场文书
工作调动申请报告
2015/05/18 职场文书
创业计划书之情侣餐厅
2019/09/29 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android