我在网站中有一个页面,其中包含一个带有表单的iframe。我无法改变这一点,但我完全可以控制在父页面和iframe页面中运行的所有JS。
我的问题是,当我将一个表单字段集中在iframe文档中时,标签到下一个字段会将光标直接发送到浏览器的地址栏,而不是表单中的下一个字段。在每个字段上设置tabindex并没有帮助。
浏览器将整个iframe本身视为页面中的一个元素(应该如此),但我想知道是否有一种方法可以捕获Tab事件并强制焦点保持在iframe内部并且它的子元素。
你们之前有没有遇到过这个问题并且有办法解决它?
不是它会帮助你,但布局是这样的:
+-------------------------------------------+
| Parent page |
| +-------------------------------+ |
| N | iframe | |
| a | | |
| v | Has about 50 fields that I'd | |
| i | like to be able to tab between| |
| g | | |
| a | But I can't! Help! | |
| t | | |
| i +-------------------------------+ |
| o |
| n |
+-------------------------------------------+
一个想法是尝试捕获iframe中的keydown事件,检查tab或shift + tab然后重新聚焦iframe,但是在失去焦点之前知道我在哪个字段上的问题。有没有办法使用JS和表单字段上的tabindex属性动态聚焦下一个字段?也许这就是我下次冒险的地方......
更新: 也许还有一些我想念的东西更简单。例如,http://www.studentloan.com上的登录框是一个iframe,我可以在这些字段之间进行选项。也许我的JS中的其他东西导致了这个问题。
更新2: 我尝试将浏览器中的iframe文档作为独立页面加载,但我仍然无法选项卡。我认为这是我在JS其他地方所做的事情,导致文档失去焦点。当我找到它时,我会发布我的解决方案。
更新3:
问题是由Ajax Control Tookit的ModalPopupExtender引起的。我在调用webservice后使用一个作为加载消息。触发回调方法时会隐藏它。
我可以在字段之间切换,直到第一次显示和隐藏模态弹出窗口。在那之后,表格永远不会保持焦点。我正在调查为什么,如果我能找到原因,我会发布答案。
谢谢!
答案 0 :(得分:1)
我和你几乎有同样的问题。 经过大量的时间寻找解决方案,我发现这个网络,我可以发现是什么导致我这个问题:modalpopupextender。 一旦我知道什么是真正的问题,找到解决方案就很容易了。这是:http://forums.asp.net/t/1191142.aspx
我希望它可以帮助你理解这个问题,就像它对我一样。
答案 1 :(得分:0)
我想用ajax是不是问题?
如果不是,那么您没有iframe标签问题,因为您的表单是当前页面的一部分。