HTML5 input焦点键盘d出问题

HTML5 input焦点键盘d出问题,第1张

最近项目有个需求,我们使用的是PDA装置,它有扫描q,可以让扫描出来的内容填写到html的input控件中。

但是有一个棘手问题,就是input控件只要获取焦点,就会d出键盘

项目的需求,希望刚开始时,只是将焦点聚集在input控件上,可以通过扫描q输入,然后点击input控件时,还能d出键盘进行修改。

这个问题解决核心就是 input控件聚焦的时候,不d出键盘,当点击的时候,才d出键盘。

尝试了很多方法,最后发现了readOnly属性一个诡异作用。当调用 input控件的focus()方法时,如果readOnly属性为true,那么不会d出键盘,但是焦点已经在 input控件上了。这个时候,再将readOnly属性设置为false,那么这个时候键盘不会d出,但是可以扫描q输入了。

示例:

移动web聊天页面,输入框在底部的时候,点击输入,d起软键盘,iOS在将页面推上的时候会回d一下,导致键盘刚好遮挡到输入框。

初次触发输入框的focus的时候,iOS 键盘默认是以英文键盘高度推上页面,但一般我们的默认输入是中文,会导致软键盘的高度变化,中文输入键盘高度高于英文,所以导致了遮挡。

Element.scrollIntoViewIfNeeded() 方法用来将不在浏览器窗口的可见区域内的元素滚动到浏览器窗口的可见区域。 如果该元素已经在浏览器窗口的可见区域内,则不会发生滚动。 此方法是标准的 Element.scrollIntoView() 方法的专有变体。

当键盘在切换中英输入法时,键盘高度变化仍然会引起键盘遮挡

监听输入框的 focus 、 blur 事件,当聚焦时,循环调用 input.scrollIntoViewIfNeeded 方法。

当监听到 blur 时,停止循环。

第一种方式:不使用input,使用其他非焦点获取的标签来代替,比如div;

第二种方式:通过js控制,<input onfocus="this.blur()"/>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6256095.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-19
下一篇 2023-03-19

发表评论

登录后才能评论

评论列表(0条)

保存