有没有人在iOS / iPhone上体验过一个表单元素激活另一个表单元素



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

我已经尽可能放大以验证我没有触摸选择——我确实在单击提交按钮,它按预期突出显示自己,但表单当然不会提交,我可以选择选项。

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

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

iOS

上的 iframe 与其他浏览器(包括桌面 Safari)中的普通 iframe 不同。

iOS Safari 会以 iframe 内页面的整个高度呈现它们。

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

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

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

对我的旧iPad的进一步研究表明,如果提交按钮关闭得足够远,它甚至无法在第一次工作。

该错误存在于ios 5.1.1和ios 8的safari中!!

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

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

最新更新