0

我在一个站点中有一个页面,其中包含一个带有表单的 iframe。我无法更改这一点,但我可以完全控制在父页面和 iframe 页面中运行的所有 JS。

我的问题是,当我有一个集中在 iframe 文档中的表单字段时,跳到下一个字段会将光标直接发送到浏览器的地址栏,而不是表单中的下一个字段。在每个字段上设置 tabindexes 没有帮助。

浏览器将整个 iframe 本身视为页面中的元素之一(应该如此),但我想知道是否有办法捕获选项卡事件并强制焦点留在 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 引起的。调用网络服务后,我将其用作加载消息。当回调方法被触发时它会被隐藏。

我可以在字段之间切换,直到第一次显示和隐藏 Modal 弹出窗口。之后,表单将永远无法保持焦点。我正在调查原因,如果我能找出原因,我会发布答案。

谢谢!

4

2 回答 2

1

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

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

于 2009-07-23T12:52:08.687 回答
0

我想使用ajax是不可能的?

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

于 2009-05-29T13:52:20.297 回答