为什么我不能在iframe中的表单元素之间进行选项卡?

时间:2009-05-29 13:44:25

标签: c# javascript iframe asp.net-3.5 tabindex

我在网站中有一个页面,其中包含一个带有表单的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后使用一个作为加载消息。触发回调方法时会隐藏它。

我可以在字段之间切换,直到第一次显示和隐藏模态弹出窗口。在那之后,表格永远不会保持焦点。我正在调查为什么,如果我能找到原因,我会发布答案。

谢谢!

2 个答案:

答案 0 :(得分:1)

我和你几乎有同样的问题。 经过大量的时间寻找解决方案,我发现这个网络,我可以发现是什么导致我这个问题:modalpopupextender。 一旦我知道什么是真正的问题,找到解决方案就很容易了。这是:http://forums.asp.net/t/1191142.aspx

我希望它可以帮助你理解这个问题,就像它对我一样。

答案 1 :(得分:0)

我想用ajax是不是问题?

如果不是,那么您没有iframe标签问题,因为您的表单是当前页面的一部分。