带iframe的JQuery thickbox。将焦点设置为输入字段

时间:2009-06-23 07:05:44

标签: javascript jquery iframe thickbox

我的应用程序中有一个 jquery thickbox 模式popu 。 ( iframe
一切都很好,但我想将焦点设置为特定输入域 d。

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

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

有人可以帮我设定焦点吗?以下是我的通话代码..

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:0)

来自docs.jquery.com:

  

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

     

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

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

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

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

干杯,