我的应用程序中有一个 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>
答案 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的。
这仍然不起作用,但也许是朝着正确方向迈出的一步。
干杯,