IE失去了对模态中输入字段的关注

use*_*337 2 html jquery internet-explorer thickbox

我有一个相当复杂的网络应用程序,我已经缩减到以下两个HTML页面,问题仍然存在.问题?在IE(8和9)中的第二个(或更少)之后,thickbox模态(iframe)输入字段失去焦点.它只发生在模态中.如果您自己加载页面,焦点不会丢失.

我已经尝试了jQuery 1.4.2和1.7.2,每个都会出现问题.我将其设置为jsfiddle,但不认为它支持能够触发第二页.已经设置好,所以你可以看到它在这里工作

基页:

<!DOCTYPE HTML>
<html>
<head>
<link href="http://jquery.com/demo/thickbox/thickbox-code/thickbox.css" media="screen" rel="stylesheet" type="text/css" >
</head>
<body>
<a id="createAccountLink" class="thickbox" href="test2.html?KeepThis=true&TB_iframe=true&height=400&width=600">Login</a>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="http://jquery.com/demo/thickbox/thickbox-code/thickbox.js"></script>
</body>
</html> 
Run Code Online (Sandbox Code Playgroud)

莫代尔:

<html>
<head>
</head>
<body>
<input type="text" id="ContactFormName" name="firstName" class="text" value="" />

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$("#ContactFormName").focus();
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我从头开始构建这个,我就不会使用thickbox.但改变它现在不是一个真正的选择,因为它在其他地方被大量使用.

答案 重点必须延迟.即使1ms也能工作.

setTimeout (function () {
$("#ContactFormName").focus();
}, 1);
Run Code Online (Sandbox Code Playgroud)

use*_*337 5

重点必须推迟.即使1ms也能工作.

setTimeout (function () {
$("#ContactFormName").focus();
}, 1);
Run Code Online (Sandbox Code Playgroud)