有没有人经历过一个表单元素在iOS / iPhone上激活另一个?

时间:2012-07-03 01:39:15

标签: ios iframe

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

我已经尽可能地放大以确认我没有触及选择 - 我确实点击了提交按钮并且它按预期突出显示,但当然形式不提交,我得到了选择的选项。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

要使它们像固定高度的普通iframe一样滚动,你必须将它们放在div中并将divs overflow设置为auto或scroll。我猜你的模态叠加已经在做了。

但即使是没有特殊定位的普通页内iframe(除了使用父div来裁剪其高度并使其可滚动)如果提交按钮原始呈现位置低于此值,通常只有提交按钮可以工作1次父div的折叠。

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

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

该错误出现在ios 5.1.1的safari中,还有 ios 8 !!!

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

但特别是关于iphone问题可能发生的事情是操作系统试图放大到表单字段,因此使用可以清楚地看到他们正在键入的内容。解决方法可能是在输入元素上声明至少16px的字体大小。通过这种方式,操作系统知道该字段中的文本已经具有相当可读的大小,并且不会尝试放大。即使在ios 8中,放大到绝对定位的模式覆盖内的iframe内容也是超级错误。