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 相关文章推荐
详解CSS样式中的 !important * _ 符号
Mar 09 HTML / CSS
css3之UI元素状态伪类选择器实例演示
Aug 11 HTML / CSS
用CSS3的box-reflect设置文字倒影效果的方法讲解
Mar 07 HTML / CSS
css3 pointer-events 介绍详解
Sep 18 HTML / CSS
CSS3实现全景图特效示例代码
Mar 26 HTML / CSS
css3翻牌翻数字的示例代码
Feb 07 HTML / CSS
HTML5的结构和语义(1):前言
Oct 17 HTML / CSS
如何让IE9以下版本(ie6/7/8)认识html5元素
Apr 01 HTML / CSS
html5简介_动力节点Java学院整理
Jul 07 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
Aug 24 HTML / CSS
CSS3实现的3D隧道效果
Apr 27 HTML / CSS
CSS文本阴影 text-shadow 悬停效果详解
May 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 var_export与var_dump 输出的不同
2013/08/09 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
php实现的简单检验登陆类
2015/06/18 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
PHP 图片处理
2020/09/16 PHP
javascript 节点遍历函数
2010/03/28 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
Python 字符串大小写转换的简单实例
2017/01/21 Python
python 图像平移和旋转的实例
2019/01/10 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
营销与策划专业毕业生求职信
2013/11/01 职场文书
保荐人的岗位职责
2013/11/19 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
年级组长自我鉴定
2014/02/22 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
德生2P3收音机开箱评测
2022/04/30 无线电