IE8不允许jQuery将焦点放在文本框上

4

我有一个使用jQuery实现的弹出窗口,就像这里所描述的:

http://www.jsfiddle.net/sLjfx/4/

问题在于以下这行代码:

$('#txtValuation').focus();

在IE8中似乎无法正常工作。弹出窗口会加载,但文本框没有焦点,而在Chrome中文本框有焦点。是否有任何解决方法?

1个回答

8

我手头没有IE8,但是可以试一下这个:我启动了我的Windows虚拟机,这个链接可行:http://www.jsfiddle.net/n25HE/,我所做的就是把 focus 调用放到一个函数中,并在你的事件处理程序结束后10毫秒调用它,像这样:

setTimeout(function() {
    $('#txtValuation').focus();
}, 10);

这样可以给IE足够的时间来渲染内容并创建文本输入的操作系统控件。在底层控件存在之前,IE无法将焦点集中于任何事物。

1
这在IE9中仍然是一个问题。由于您可能会在应用程序中遇到它不止一次,因此可以按照此处的说明将其重构为函数以保持DRY:http://zadasnotes.blogspot.com/2011/01/let-ie-breath.html - Nada Aldahleh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接