iOS下调用元素的focus方法,input元素不聚焦,键盘不弹起的问题
2024-08-26 23:21:25
页面元素
<input type="text" ref="elInput"/>
<div
style="margin-top:20px;"
@click="confession()"
ref="elBtn">点击使input聚焦
</div>
js代码
methods(){
confession(){
this.$refs.elInput.focus()//显示键盘
}
}
上述代码在是有效的,但是对于input元素不是一直存在页面上,是动态显示的,上述方法就会失效
页面元素
<input v-show="isShow" type="text" ref="elInput"/>
<div
style="margin-top:20px;"
@click="confession()"
ref="elBtn">点击使input聚焦
</div>
js代码
data() {
return {
isShow:false
}
},
methods(){
confession(){
this.isShow=true
this.$nextTick(function(){
this.$refs.elInput.focus()//显示键盘
})
}
}
上述情况,ios下input聚焦是失效的,可以使用下面的方法(让input一直都在页面中)
将input写在页面上,利用定位给input显示在用户看不到的地方,当用户点击按钮时,将input定位到指定位置,显示出来
也可以将input透明度设为0,当用户点击按钮时,将input的透明对设为1
页面元素
<input :class="{'is-show':isShow}" type="text" ref="elInput"/>
<div
style="margin-top:20px;"
@click="confession()"
ref="elBtn">点击使input聚焦
</div>
js代码
data() {
return {
isShow:false,
}
},
methods(){
confession(){
this.isShow=true
this.$refs.elInput.focus()//显示键盘
}
}
<style lang="less" scoped>
input{
position:relative;
left:-1000px;
}
.is-show{
left:0;
}
</style>
上面的方法验证成功,注意,confession方法里面的 this.$refs.elInput.focus()这句代码不能放在异步或函数里面,否则也会失效
原因在于ios有所限制:
寻常代码里的focus不会生效,除了在某个UI事件(例如click, touchend等)的直接执行环境中调用focus
注意这个直接环境,它的意思是如果你在setTimeout, promise等异步方式中执行了focus,依然是无效的。
ios上述限制是出于安全机制的考虑
ios上只有用户交互触发的focus事件才会起效,而延时回调的focus是不会触发的
最新文章
- 初探JavaScript(三)——JS带我";碰壁";带我飞
- LeetCode Burst Balloons
- JS一个根据时区输出时区时间的函数
- SqlServer中使用Select语句给变量赋值的时候需要注意的一个问题
- UVALive 7147 World Cup
- jQuery plugin
- 纯css3实现tab选项卡
- 选择客栈noip2011
- Go基础系列:接口类型断言和type-switch
- Zookeeper的一致性
- SQL语句简单笔记
- Rop框架学习笔记
- 腾讯云外网IP直通后,遇到网络问题
- 有关Struts下载文件时报错问题
- struts2.0自定义类型转换
- [Noi2017]整数 BZOJ4942
- SSIS 剖析数据流之:连接和查找转换
- hdoj Max Sum Plus Plus(DP)
- 第31次Scrum会议(11/19)【欢迎来怼】
- 78. Longest Common Prefix【medium】
热门文章
- sicily 1002 Anti-prime Sequences
- ES6 | 关于class类 继承总结
- hiho1605 - 递推+1000000000=矩阵快速幂
- HCF4094(CD4094)应用
- React 第三天
- How Javascript works (Javascript工作原理) (八) WebAssembly 对比 JavaScript 及其使用场景
- POJ-2752 Seek the Name, Seek the Fame 字符串问题 KMP算法 求前后缀串相同数木
- LCT复习
- mysql联查中使用if和group by会让你的结果不是你想要的
- 洛谷—— P2904 [USACO08MAR]跨河River Crossing