iOS Safari HTML表格下一个/上一个button – 它们是如何工作的?

免责声明:我正在使用JQuery Mobile。

我有一堆不同forms的页面,但其中一些似乎在按下一个/上一个button时performance出不同的行为。

iOS7键盘上的下一个/上一个按钮

所有表单都使用tab索引进行设置。

表格1完美地工作,除了跳过JQuery Mobile翻转开关和单选button,这不是一个真正的问题,因为它们有点不同。

表单2, tabindex="0"的元素使用$("#myElement").focus(); 然后下一个button被禁用,并按下前一个button到窗体的底部,即下一个/ prev顺序似乎是1,2,0。

表格3似乎是完全不稳定的,这次按顺序向下,但有些领域似乎是把焦点放在标签上,然后再按下一下,导致input字段被选中。

表格4工作正常,除了最后select的领域似乎被忽略。 然后tabindex跳转到页面上的一些锚点元素,然后继续翻转开关。 表单5具有与表单4相同的行为,表单中的最后一个select字段也将被忽略。

我会继续调查这个问题,并制作一个小提琴,但是有没有人遇到过这样的问题,或者对他们应该如何工作有一些了解?

好的,这些都是我的错误,但它可能会帮助别人,所以在这里。

下一个/上一个命令似乎与tabindex属性直接相关,没有附加任何string。

但是,我的错误, tabindex从1开始不是0. http://www.w3schools.com/tags/att_global_tabindex.asp 。 所以对于Form 2,它从1开始,然后是2,然后是0。

我正在使用knockoutjs将tabindex属性绑定到表示每个字段和字段值的observableArray项目的$index() ,这使得错误难以发现。 所以我不得不将它改为$index() + 1

对于单选button,索引取自选项集合,而不是父对象,所以我必须使用$parentContext.index() + 1 (请参阅https://stackoverflow.com/a/11013401 / 1061602 )。

尝试相同的方法来翻转开关似乎没有任何作用。

完全不稳定的forms是因为还有另一种forms仍然存在于DOM的tabindex属性设置为一组类似的值,所以它依次在两种forms之间切换。 对我来说最简单的解决scheme是隐藏现有的表单,请参阅https://stackoverflow.com/a/5494043/1061602

表格4和表格5之间的通用性也是它们具有相同的tabindex(6),但是这是一个红色的鲱鱼。 仍然在调查为什么最后一个select字段在Chrome中被跳过 – 但是在iOS Safari中,它按预期工作,所以问题解决了!