2

嗨,我的应用程序上有一个jquery厚框模式弹出窗口。(iframe
一切都很好,但我想将焦点设置到特定的输入字段d。

Iframe 加载一个普通的 aspx 页面,所以我想我会做一个 $(document).ready(..focus);
我将该脚本放在 IFrame 代码中

但是,这不起作用。我相信在“准备好”之后,thickbox 会执行一些其他代码,使其再次失去焦点。(例如..我可以设置输入字段的值,这样机制就可以工作了..

任何人都可以帮我设置焦点吗?下面是我的调用代码..

<a href="page.aspx?placeValuesBeforeTB_=savedValues&TB_iframe=true&height=550&width=700" title="Add" class="thickbox">Add</a>
4

2 回答 2

4

ThickBox 通过在 iframe 元素的 onload 事件中调用方法来显示 iframe 的容器。由于 iframe 隐藏在父页面上,直到加载 iframe 的内容后,您不能简单地使用 $(document).ready(..focus); 设置焦点。我发现解决此问题的最简单方法是使用 setTimeout 将设置焦点的函数调用延迟到显示 iframe 之后:

jQuery(document).ready(function() {        
    setTimeout(function(){
        $('#YourElementID').focus();   
    },200);
});

注意:您可能需要调整传递给 setTimeout 的毫秒值。

于 2009-08-04T20:10:42.917 回答
0

来自 docs.jquery.com:

触发每个匹配元素的焦点事件。

这会导致执行所有绑定到焦点事件的函数。请注意,这不会执行底层元素的焦点方法。

这意味着,您的代码应该更可能是: $('#input_field').get(0).focus ()

不同之处在于,在我的示例中,您使用的是 DOM 元素自己的焦点元素,而在您的示例中,您使用的是 jQuery。

这仍然行不通,但也许是朝着正确方向迈出的一步。

干杯,

于 2009-06-24T07:22:22.310 回答