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

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

然而,这不起作用。我相信在“准备好”之后其他一些代码由thickbox执行,因此它会再次失去焦点。 (例如..我可以设置输入字段的值,以便机制确实有效。

有人可以帮我设定焦点吗?下面是我的调用代码..

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

解决方案

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

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

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

其他提示

来自docs.jquery.com:

  

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

     

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

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

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

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

干杯,

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top