私が欲しいもの:フォーカス時に、hide()とshow()によって1つの入力ボックスを別の入力ボックスに変更します。
結果: Internet Explorer (7/8) では、フォーカスすると入力ボックスが数ピクセル右に移動します。
- 他のブラウザでも問題なく動作します (明らかに)。
問題を再現した場所へのリンクは次のとおりです。
<関連性がなくなったためリンクを削除>
ソースは上記のリンク先のファイルにありますが、便宜上、ここにも含めておきます。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<meta http-equiv="Content-language" content="en"/>
<script src="includes/jquery-1.4.2.min.js"></script>
<script>
$(document).ready(function(){
$("#index_login_dummy").focus(function(){
$(this).hide();
$('#index_login_dummy2').show().focus();
});
});
</script>
<style type="text/css">
.input_h {display:none;}
</style>
</head>
<body>
<div id="index_login">
<form method="post" name="index_login" action="login.php">
<input id="index_login_email" type="text" value="Email" name="email">
<input id="index_login_dummy" type="text" value="Password" name="dummy">
<input id="index_login_dummy2" type="text" class="input_h" value="Password" name="dummy"><input type="submit" class="input_button" value="Login">
</form>
</div>
</body>
</html>
よく練られた質問に+1!;)
編集:
フォーム フィールドをテーブルに配置すると、意図したとおりに機能します。これらのような解決策を取らなければならないこともあると思いますが、理由がわからないのは嫌です。ただし、ブラウザごとにフォーム入力要素の描画方法が異なるという説明には問題ありません (IE では、入力ボタンが残りの要素に影響を与えます)。
作業コード:
<div id="index_login">
<form method="post" name="index_login" action="login.php">
<table>
<tr>
<td><input id="index_login_email" type="text" value="Email" name="email"></td>
<td><input id="index_login_dummy" type="text" value="Password" name="dummy"><input id="index_login_dummy2" type="text" class="input_h" value="Password2" name="dummy"></td>
<td><input type="submit" class="input_button" value="Login"></td>
</tr>
</table>
</form>
</div>