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使用多列制作瀑布流
May 10 HTML / CSS
CSS3使用transition实现的鼠标悬停淡入淡出
Jan 09 HTML / CSS
CSS3制作Dropdown下拉菜单的方法
Jul 18 HTML / CSS
HTML5移动端开发遇见的东西
Oct 11 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
Jul 18 HTML / CSS
HTML5中的音频和视频媒体播放元素小结
Jan 29 HTML / CSS
HTML5标签大全
Nov 23 HTML / CSS
Html5实现文件异步上传功能
May 19 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
Aug 18 HTML / CSS
用canvas画心电图的示例代码
Sep 10 HTML / CSS
HTML5表单验证特性(知识点小结)
Mar 10 HTML / CSS
CSS 制作波浪效果的思路
May 18 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实现的验证码小程序
2016/12/13 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
区分JS中的undefined,null,&quot;&quot;,0和false
2007/03/08 Javascript
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
JS对文本框值的判断示例
2014/03/10 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
python实现五子棋小程序
2019/06/18 Python
利用python求积分的实例
2019/07/03 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
python中threading开启关闭线程操作
2020/05/02 Python
python 如何停止一个死循环的线程
2020/11/24 Python
python 制作磁力搜索工具
2021/03/04 Python
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
Linux面试题LINUX系统类
2015/11/25 面试题
学校安全教育制度
2014/01/31 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python