IOS 中 input 输入框的一些怪异行为
最近有一些项目在 IOS 系统中出现了一些奇怪的问题,这些问题是关于 <input> 标签的一些怪异行为。
IOS 键盘左上角切换表单元素
IOS 会自动检测页面的表单元素自动并分配 tabindex 索引让用户可以快速切换表单元素,但这也会造成一些网页开发上的问题。
问题描述
页面中存在表单元素
页面浮层也是一个表单
这时候点击左上角的 上
下
按钮
产生光标定位到下层表单元素中
解决方案
经过搜索资料后,得出解决方案,在表单元素上面添加 tabindex="-1"
属性
<input type="text" tabindex="-1" />
这样 IOS 左上角的 上
下
箭头就被禁用了,也就修复了该问题
IOS 禁止输入中文
我们在做验证码的时候,希望用户只能输入英文和数字,但在 IOS 中并不能很好的实现这个功能。
问题描述
页面中 <input>
设置了 maxlength
限制 4 个字符,oninput
事件中用于移除中文字符,但是在 IOS 中没有效果
解决方案
利用 compositionstart
,compositionend
,input
inputElement.addEventListener('compositionstart', function () {
this.lock = true
this.regExpRule = /[^0-9a-zA-Z]/g
})
inputElement.addEventListener('compositionend', function () {
this.lock = false
this.value = this.value.replace(this.regExpRule, '')
})
inputElement.addEventListener('input', function () {
if (!this.lock) {
this.value = this.value.replace(this.regExpRule, '')
}
})
许可协议:署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
本文链接:https://tanglj.cn/2018/11/23/some-quirks-of-ios-input/