私が必要とするのはこれです:
- ユーザーがページをロードします (入力は null です)
- ユーザーが何らかの入力を行って送信する
- 入力には新しい値があります
- ユーザーが戻る
- 入力には以前の値があります
私のphpファイルは次のようになります。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form id="formTest" name="formTest" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" autocomplete="off">
<select id="selectTest" name="selectTest">
<option value=0 <?php if(isset($_POST['selectTest']) && $_POST['selectTest']==0){echo 'selected=\'selected\'';} ?>>Select an option...</option>
<option value=1 <?php if(isset($_POST['selectTest']) && $_POST['selectTest']==1){echo 'selected=\'selected\'';} ?>>Option 1</option>
<option value=2 <?php if(isset($_POST['selectTest']) && $_POST['selectTest']==2){echo 'selected=\'selected\'';} ?>>Option 2</option>
</select>
<br/>
<input id="inputTest" name="inputTest" type="text" value="<?php if(isset($_POST['inputTest'])){echo htmlentities($_POST['inputTest']);} ?>" />
<br/>
<input type="submit" value="OK" />
</form>
<?php
print_r($_POST);
?>
</body>
</html>
ご覧のとおり、フォームは送信後にそのデータを「記憶」します。この時点で、ユーザーがブラウザの [戻る] ボタンをクリックすると、問題が発生します。POST 配列には前の状態の値がありますが、ブラウザーはフィールドに次の状態のデータ (送信後のデータ) を入力します。
フォームのオートコンプリート プロパティをオフにすることで、Chrome と Firefox でこの問題を管理できましたが、IE8 では結果が得られませんでした。
どんな提案でも大歓迎です!