html - iOS Safari HTML 表单下一个/上一个按钮 - 它们如何工作?

标签 html ios forms jquery-mobile mobile-safari

免责声明:我使用的是 JQuery Mobile。

我有一堆不同形式的页面,但其中一些页面在按下下一个/上一个按钮时似乎表现出不同的行为。

The next/previous buttons on iOS7 keyboard

所有表单都设置了标签索引。

Form 1 工作完美,除了它跳过了 JQuery Mobile 翻转开关和单选按钮,这不是真正的问题,因为它们有点不同。

Form 2,使用 $("#myElement").focus();tabindex="0" 元素设置了焦点,然后是下一个按钮被禁用,按下上一个按钮会转到表单底部,即下一个/上一个顺序似乎是 1、2、0。

Form 3 似乎完全不稳定,这次按顺序向下但有些字段似乎首先将焦点设置到标签,然后再次按下一步导致选择输入字段。

Form 4 工作正常,除了最后一个选择字段似乎被忽略了。然后 tabindex 在继续翻转开关之前跳转到页面上的一些 anchor 元素。 Form 5 具有与 Form 4 相同的行为,再次忽略表单中的最后一个选择字段。

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

最佳答案

好的,所有这些都是我的错误,但它可能会对某些人有所帮助,所以就开始吧。

下一个/上一个顺序确实似乎与 tabindex 属性直接相关,没有任何附加条件。

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

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

对于单选按钮,索引是从选项集合中获取的,而不是从父项中获取的,所以我不得不为它们使用 $parentContext.index() + 1(参见此处:https://stackoverflow.com/a/11013401/1061602 ).

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

完全不稳定的表单是因为 DOM 上仍然存在另一个表单,其 tabindex 属性设置为一组相似的值,因此它在两个表单之间依次切换。对我来说最简单的解决方案是隐藏现有表单,请参见此处:https://stackoverflow.com/a/5494043/1061602

Form 4 和 Form 5 之间的共同点还在于它们具有相同的 tabindex (6),但这是一个转移注意力的问题。仍在调查为什么最后一个选择字段在 Chrome 中被跳过 - 但是在 iOS Safari 上它按预期工作,所以问题解决了!!

关于html - iOS Safari HTML 表单下一个/上一个按钮 - 它们如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832629/

相关文章:

jquery - 在 HTML 表单上制作 Enter 键提交而不是激活按钮

php - 如何设置下拉列表的样式?

javascript - 为什么在 Post 过程中 JQuery 会加载到 PHP 页面中?

html - 将 div 放在 div 之上,底部垂直对齐

ios - 向iOS App添加大量动态格式化文本

ios - 在触摸屏幕之前如何停止调用函数?

ios - iOS 上的 resolveLocalFileSystemURL 每次使用不同的 App UUID

PHP : Multiple cURL with same URL

javascript - jQuery版本与div搜索效果冲突

html - <a> 标签中的 block 级元素,验证与可用性