【发布时间】:2020-10-09 13:14:58
【问题描述】:
很难用简短的标题来描述这个问题,但复制这个问题非常简单:
代码示例
<input type="text" style="width: 100%; border: 1px solid #ccc; padding: 10px;"/>
<pre>
Android Chrome:
- Click the input field to open virtual keyboard
- Type a character using said keybaord
- Scroll down
- Click the button
Click is not registered :(
Button is selected, keyboard just closes
</pre>
<button href="#" onclick="alert('clicked');" style="display: block; text-align: center; width: 100%; background-color: #ccc; color: #fff; padding: 10px;">click</button>
在 Codepen 上试用:https://codepen.io/klaasvanderweij/pen/VwjYQvo
说明
因此,单击输入字段以触发 Android 显示屏幕键盘。然后你输入一个字符,任何字符,这是(虽然奇怪)必填。
现在保持键盘打开/可见并滚动(向下)到屏幕区域,当您在输入字段。点击任何可点击的内容(<button>、<a>、<div onclick="..."> 等)。
预期行为:
点击已注册。
实际行为:
未注册任何点击。
我正在开发一个自动完成/提前输入/搜索下拉菜单,其中要单击的元素是动态添加的。所以一开始我以为这个问题的本质是动态添加的内容或position: absolute;元素,但这个例子表明它比我应用的场景简单得多。
我尝试过的:
- 使用
<button>、<a>、<div onclick="..."> - 在
document上注册一个事件侦听器以找出所述点击的目标。目标原来是键盘输入期间可见区域中存在的底层元素(例如:<body>)
帮助
这种情况非常简单(而且可能很常见),以至于很多人都会遇到这个问题。但是,我找不到解决方案或解决方法。
我希望能够在键盘输入期间注册可见区域之外的第一次点击,例如本例中的按钮点击。有没有办法通过 JavaScript 或 CSS 或其他任何方式确保在进入后的第一次点击被拾取?
【问题讨论】:
-
您在寻找什么?看不懂!
-
@UnknownName 好点,我会更新我的帖子!
-
我希望您在客户端输入时需要验证输入字段...我说的对吗?
-
javascript 允许您验证表单[验证:输入必须是数字/字母/大写或小写字母/符号/电子邮件/等...]
-
@UnknownName 该问题与验证无关
标签: javascript android html google-chrome