Javascript MobileSafari:iframed表单“下一个输入”关于下拉错误
在这里寻找关于一个非常奇怪的bug的信息。我和另一位同事已经为此努力了一段时间。我看过了大多数(如果不是所有的话)相关的SO帖子,但似乎没有一篇能直接解决这个问题 我们有一个非常简单的移动网络表单。此表格的流程为:Javascript MobileSafari:iframed表单“下一个输入”关于下拉错误,javascript,ios,iphone,iframe,mobile-safari,Javascript,Ios,Iphone,Iframe,Mobile Safari,在这里寻找关于一个非常奇怪的bug的信息。我和另一位同事已经为此努力了一段时间。我看过了大多数(如果不是所有的话)相关的SO帖子,但似乎没有一篇能直接解决这个问题 我们有一个非常简单的移动网络表单。此表格的流程为: Select > Input[type=text] > Select > Select > Input[type=text] > Button 问题就在这里。当ios设备上的用户单击select(选择)时,会弹出表单帮助程序,用户可以选择一个值 如果用
Select > Input[type=text] > Select > Select > Input[type=text] > Button
问题就在这里。当ios设备上的用户单击select(选择)时,会弹出表单帮助程序,用户可以选择一个值
如果用户点击表单帮助器中的下一个箭头,则以下输入将被聚焦,键盘将打开,用户可以键入。但是,没有任何文本输入添加到文本输入中
元素上的一些jquery事件和一些日志语句验证了这一点。事实上,输入正在接收焦点,并且正在记录该输入上的每个按键事件,但没有文本
如果用户点击第一个select,单击form helper中的done,然后手动单击以下文本输入,则按键输入有效,文本显示在输入中
对于按钮前的第二个文本输入,同样的错误也会以同样的方式发生。如果用户使用表单帮助器中的下一个箭头按钮,则不会向实际输入字段追加文本
我想到了几种使用javascript来强制实现这一点的方法,但如果可以的话,我希望避免这种情况。但所有这些都可能会引入其他bug,加上移动safaris对焦点、模糊和点击事件的处理进一步强化了这一点
有什么建议吗
-更新-
我在苹果的支持论坛上发现有人也有同样的问题
事实证明它与iframe中的表单相关。此外,单击的第一个输入必须是下拉列表才能重新创建问题
嗨,下面是我面临问题的一个链接。
http://182.74.28.109/H3G/Main.html 复制步骤
单击提供者下拉列表。
从下拉列表中选择一项。
现在,单击>,而不是单击“完成”。
这将移动cusor to Name字段。
现在尝试在文本框中输入一些文本。
文本框不允许输入任何内容。
如果表单不在iframe中,则不存在此项
我已经通过javascript确认,按下Next按钮后的输入具有焦点。还确认正在按下的按钮正在注册,但由于某些原因,值没有附加到输入本身
这让我相信这是某种移动safari bug,这意味着修复可能需要一段时间,即使修复了。。。并非所有较旧的设备都会收到此消息,实际上还不确定iOS遗留设备上是否存在此消息
我有一个基本的概念证明,可以检测按下的字符,对它们进行解码并将它们附加到输入中,但这充其量只是一个黑客。您只能模拟本机功能。我还必须模拟特殊的按钮,比如某些输入的退格和空格键。作为最后的补救措施,我可能会实现一个插件来完成这一点,但它可能不会拥有本机输入的所有功能。我不想走这条路。想法1如果你用一个小的文本区域替换文本输入,它仍然不起作用吗
想法2:创建一个虚假的隐藏输入元素来接收焦点,然后在该输入上附加一个事件处理程序,这不是一个更容易的方法吗?从您的帖子中可以看出,该事件处理程序可以将焦点传递给您想要的实际输入元素?如果这样做,那么重点元素是否能正常工作?我目前在一个项目中遇到了同样的问题。几天的谷歌搜索让我来到了这里。我想知道是否有一个实际的错误报告或已知的解决方法。我也在等待解决方案