次の 2 つの HTML ページに要約したかなり複雑な Web アプリケーションを持っていますが、問題はまだ存在します。問題?IE (8 & 9) では、thickbox モーダル (iframe) の入力フィールドが 1 秒 (またはそれ以下) 後にフォーカスを失います。モーダルにある場合にのみ発生します。ページを単独でロードしても、フォーカスは失われません。
jQuery 1.4.2 と 1.7.2 の両方を試しましたが、それぞれで問題が発生します。これをjsfiddleとして設定しますが、2番目のページをトリガーできるとは思わない. ここで動作を確認できるように設定しました
ベースページ:
<!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 は使用しません。しかし、それを変更することは、他の場所で頻繁に使用されているため、現時点では実際にはオプションではありません.
Answer フォーカスを遅らせる必要があります。1msでも動作します。
setTimeout (function () {
$("#ContactFormName").focus();
}, 1);