在这里寻找一些关于一个非常奇怪的错误的信息。我自己和另一位同事一直在尝试解决这个问题。如果不是所有相关的 SO 帖子,我已经查看了大多数,但似乎没有一个直接解决这个问题。
我们有一个非常简单的移动网络表单。这个表格的流程是:
Select > Input[type=text] > Select > Select > Input[type=text] > Button
这是问题所在。当 ios 设备上的用户单击选择时,会弹出表单助手,用户可以选择一个值。
如果用户点击表单助手中的“下一步”箭头,则“输入”后面的焦点将被聚焦,小键盘打开并且用户可以输入。但是,没有任何文本输入被添加到文本输入中。
这已通过元素上的一些 jquery 事件和一些日志记录语句得到验证。输入实际上正在接收焦点,并且该输入上的每个按键事件都被记录但没有文本?!?!?!?
如果用户点击第一个选择,单击“完成”(在表单助手中),然后手动单击以下文本输入,则键输入有效并且文本显示在输入中。
对于按钮之前的第二个文本输入,同样的错误以完全相同的方式发生。如果用户使用表单助手中的“下一步”箭头按钮,则不会将文本附加到实际输入字段中。
我有几个使用 javascript 来强制它工作的“黑客”,但如果可以的话,我想避免这种情况。但所有这些都可能引入其他错误,而且移动 safari 对焦点、模糊和点击事件的处理进一步强化了这一点。
有什么建议么?
- 更新 -
我在苹果支持论坛上发现了同样问题的人。
https://discussions.apple.com/thread/5527146
原来它与 iframe 中的表单有关。此外,单击的第一个输入必须是一个下拉菜单才能重新创建问题。
嗨,下面是我面临问题的链接之一。
http://182.74.28.109/H3G/Main.html
重现步骤
- 单击提供程序下拉菜单。
- 从下拉列表中选择一项。
- 现在,不要单击“完成”,而是单击“>”。
- 这会将光标移动到名称字段。
- 现在尝试在文本框中输入一些文本。
- 文本框不允许输入任何内容。
如果表单不在 iframe 中,则不存在。
我已经通过javascript确认按下“下一步”按钮后的输入具有焦点。还确认被按下的按钮正在注册,但由于某种原因,这些值没有附加到输入本身。
这让我相信这是某种移动 safari 错误,这意味着可能需要一段时间才能修复修复,即使修复......并非所有旧设备都会收到它(实际上还不确定这是否存在iOS 旧设备)。
我有一个基本的概念证明,可以检测按下的字符,解码它们并将它们附加到输入中,但它充其量只是一个 hack。您只能模拟本机功能。我还必须模拟特殊按钮,例如某些输入的退格键和空格键。作为最后的修复,我可能会实现一个插件来完成这个,但它可能不具备原生输入的所有功能。我不想走这条路。