我有一個相當複雜的網絡應用程序,我已經濃縮到下面的兩個HTML頁面,並且問題仍然存在。問題?在IE中的第二個(或更少)之後,thickbox模式的(iframe)輸入字段失去焦點(8 & 9)。它只發生在模態中時。如果您自行加載頁面,則焦點不會丟失。IE失去了重點在模態輸入字段
我試過jQuery 1.4.2和1.7.2,並且每個都會出現問題。我將它設置爲jsfiddle,但不認爲它支持能夠觸發第二頁。已經設定,讓你可以看到它working here
基本頁:
<!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>
模態:
<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>
如果我從頭開始構建這個,我不會用ThickBox的。但改變它現在不是一個真正的選擇,因爲它在其他地方大量使用。
答案 重點必須延遲。即使1ms工作。
setTimeout (function() {
$("#ContactFormName").focus();
}, 1);
沒有任何一種演示,沒有真正的方法來調試此行爲。 – j08691
我已經添加了一個示例頁面的鏈接。你不能編輯它,但你可以看到它的工作。如果我可以讓jsfiddle來啓動一個iframe,我會在那裏設置它。 – user1337
爲什麼你的腳本加載在身體而不是頭部?另外,雖然我沒有使用過thickbox,但爲什麼你的模式包含整頁的HTML?你不需要HTML格式嗎?最後,爲什麼模式需要再次加載jQuery? – j08691