プロが教える店舗&オフィスのセキュリティ対策術

フォームでPOSTをしたあと、history.backや戻るボタンで戻ったときに、POST時に選択したラジオボタンのcheckedもfalseになってしまうのですが、チェックされているものを取得することはできるのでしょうか。

■form部分
<form name="form1" method="post" action="...">
<input type="radio" name="radio1" value="1">1<br />
<input type="radio" name="radio1" value="2">2<br />
<input type="radio" name="radio1" value="3">3<br />
</form>

■JavaScript部分
var radio1 = document.form1.radio;
for(var i=0;i<radio1.length;i++) {
if (radio1[i].checked) {
alert(i);
}
}

このようなコードで、選択してPOST後、「戻る」で入力ページ表示時にJavaScriptを実行しても、
radio1[i].checkedは全てfalseになってしまいます。

また選択→POST→戻る→そのままPOSTとすると、選択したvalue値は正しくサーバーに送られます。

「戻る」でのページ表示時に選択したものを取得する方法があれば教示いただけますか。

A 回答 (2件)

どのブラウザのどのバージョンで確認されているのでしょうか。


記憶では、質問の挙動は、ブラウザによって異なると思いますよ。
仮に、質問の挙動に限定するならば、初回の送信時に、cookieやLocal Storageに保存すれば参照できます。
また、複数回の送信をされたくない場合は、明示的にJSで値をリセットするか、あるいは、ajaxで通信すれば、そもそも履歴に残らないので、「戻る」では送信前のページには戻りません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ブラウザはそれぞれ現在の最新
IE11、FF30、Chrome35で同じ挙動です。

JavaScriptでフォームを整形(1階層目の選択で2階層目を絞り込み)しているのですが、入力値をCookieに持たせたくないのでセッションを使った方が無難ですね。

お礼日時:2014/07/17 10:22

>「戻る」でのページ表示時に選択したものを取得する方法



onsubmit時にクッキーにチェック状態を保存しておき
onload時にクッキーの状態をみてチェックを設定する
というのが妥当

むしろ「戻る」をさせないようにすれば、そんなことを悩む必要もなくなります
ただしその場合セッション的な処理になるのでjavascriptだけでは厳しいかも
    • good
    • 0
この回答へのお礼

ありがとうございます。

仕様という感じのようなので諦めます。
入力値をCookieに持たせたくないのでセッションを使った方が無難ですね。

お礼日時:2014/07/17 10:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています