2

在这里寻找一些关于一个非常奇怪的错误的信息。我自己和另一位同事一直在尝试解决这个问题。如果不是所有相关的 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 重现步骤

  1. 单击提供程序下拉菜单。
  2. 从下拉列表中选择一项。
  3. 现在,不要单击“完成”,而是单击“>”。
  4. 这会将光标移动到名称字段。
  5. 现在尝试在文本框中输入一些文本。
  6. 文本框不允许输入任何内容。

如果表单不在 iframe 中,则不存在。

我已经通过javascript确认按下“下一步”按钮后的输入具有焦点。还确认被按下的按钮正在注册,但由于某种原因,这些值没有附加到输入本身。

这让我相信这是某种移动 safari 错误,这意味着可能需要一段时间才能修复修复,即使修复......并非所有旧设备都会收到它(实际上还不确定这是否存在iOS 旧设备)。

我有一个基本的概念证明,可以检测按下的字符,解码它们并将它们附加到输入中,但它充其量只是一个 hack。您只能模拟本机功能。我还必须模拟特殊按钮,例如某些输入的退格键和空格键。作为最后的修复,我可能会实现一个插件来完成这个,但它可能不具备原生输入的所有功能。我不想走这条路。

4

1 回答 1

0

思路1)如果把文本输入换成小的textarea,还是不行吗?

想法2)创建一个虚假的隐藏输入元素来接收焦点,然后将事件处理程序附加到该输入(从您的帖子中似乎可以正常工作),这不是更容易破解吗?你想要的输入元素?如果以这种方式完成,焦点元素会正常工作吗?

于 2013-11-14T05:29:10.077 回答