0

我有一个出现在 FancyBox iframe 模式中的表单。在 iOS 5 上(特别是在 iPhone 上 - 在 iPad 上不会发生),当我触摸提交按钮时,它会激活一个<select>出现在提交按钮上方约 50 像素处的按钮,然后我<select>会看到屏幕底部的选项。

我已经尽可能放大以验证我没有触摸选择 - 我确实单击了提交按钮,它按预期突出显示了自己,但是表单当然没有提交,我得到了选择的选项从。

有没有人在 iOS 5 中遇到过这样的错误?我无法将其归结为其他任何事情 - 通常会运行一些 javascript 来处理提交点击时的表单,但它根本没有被激活,它对表单本身没有影响<select>,等等。我见过iOS 上的 iframe 发生了一些奇怪的事情,想知道是否存在潜在的相关性。

4

2 回答 2

0

您可能会将您的操作连接到与插座不同的按钮。这可以解释为什么会发生正确的事情(Action is OK)但更新 Frame Rect 会搞砸(Outlet 在错误的按钮上)。

于 2012-07-03T05:38:51.360 回答
0

ios 上的 iframe 的行为与其他所有浏览器(包括桌面 safari)中的普通 iframe 不同。

ios safari 将它们呈现在 iframe 内页面的整个高度。

要让它们像固定高度的普通 iframe 一样滚动,您必须将它们放在 div 中并将 div 溢出设置为自动或滚动。我猜你的模态叠加已经在这样做了。

但是,即使是没有特殊定位(除了使用父 div 裁剪其高度并使其可滚动)的普通页内 iframe,如果提交按钮的原始呈现位置低于父 div。

所以第一次提交会起作用,但如果表单返回缺少必填字段错误,您将无法再次点击提交按钮。

对我的旧 ipad 的进一步研究表明,如果提交按钮向下足够远,它甚至不会在第一次工作。

该错误存在于 ios 5.1.1 和ios 8的 Safari 浏览器中!!!

我可以在 iframe 中不是输入 type=submit 的任何元素上使用 onclick javascript 函数来强制表单为 form.submit()。

但特别是关于 iphone 问题,可能发生的是操作系统试图放大表单字段,以便用户可以清楚地看到他们正在输入的内容。对此的修复可能是在输入元素上声明至少 16px 的字体大小。这样,操作系统就知道该字段中的文本已经具有相当可读的大小,并且不会尝试放大。即使在 ios 8 中,放大到绝对定位的模态叠加层内的 iframe 的内容也是超级错误的。

于 2014-10-19T05:14:31.870 回答