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 相关文章推荐
Web前端绘制0.5像素的几种方法
Aug 11 HTML / CSS
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
Sep 02 HTML / CSS
CSS3实现可爱的小黄人动画
Jul 11 HTML / CSS
用CSS3实现无限循环的无缝滚动的实例代码
Jul 04 HTML / CSS
CSS3中animation实现流光按钮效果
Dec 21 HTML / CSS
HTML5 video视频字幕的使用和制作方法
May 03 HTML / CSS
html5 canvas 画图教程案例分析
Nov 23 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
May 15 HTML / CSS
HTML块级标签汇总(小篇)
Jul 13 HTML / CSS
浅谈Html5中视频 音频标签 进度条的问题
Jul 26 HTML / CSS
html5录音功能实战示例
Mar 25 HTML / CSS
详解如何将 Canvas 绘制过程转为视频
Jan 25 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
一周学会PHP(视频)Http下载
2006/12/12 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
php实现的简单检验登陆类
2015/06/18 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
PHP使用ActiveMQ实现消息队列的方法详解
2019/05/31 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python使用urllib2模块实现断点续传下载的方法
2015/06/17 Python
简单了解Python中的几种函数
2017/11/03 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
柏林通行证:Berlin Pass
2018/04/11 全球购物
广州品高软件.net笔面试题目
2012/04/18 面试题
政府信息公开实施方案
2014/05/09 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
解析在浏览器地址栏输入一个URL后发生了什么
2021/06/21 Servers
基于redis+lua进行限流的方法
2022/07/23 Redis