• 締切済み

確認ページからフォームページに「戻る」時の入力内容の保持

ラジオボタンと連動したチェックボックスがあります。 ラジオボタンを選択し、さらにチェックボックスに入力後、「確認」をクリックして確認ページから「戻る」の時にチェックボックスの入力内容の値が保持されておらず、困っています。 Firefoxではきちんと動作するのですが、IEなど他のブラウザでは動作しません。 入力内容を保持する方法はありますでしょうか? <script> window.onload=function(){ var f0=document.getElementById("f0"); try{ f0.addEventListener("click",function(e){func(e)},true); }catch(e){ f0.attachEvent("onclick",function(e){func(e)}); } } function func(e){ var obj= (e.srcElement || e.target); if(obj.nodeName!="INPUT") return false; switch(obj.type){ case "radio": setRadio(obj); break; case "checkbox": setCheckbox(obj,"シルク","Kind04[]","SELECT"); break; } } function setRadio(obj){ var n=obj.parentNode.firstChild; while(n){ if(n.nodeName=="INPUT" && n.type=="checkbox"){ n.disabled=obj.value!="アリ"; n.checked=false; } if(n.nodeName=="SELECT"){ n.disabled=true; n.selectedIndex=0; } n=n.nextSibling; } } function setCheckbox(obj,v,n,nn){ if(obj.value!=v) return false; var node=obj.parentNode.firstChild; while(node){ if(node.nodeName==nn && node.name==n){ node.disabled=!obj.checked; node.selectedIndex=0; } node=node.nextSibling; } } </script> </head> <body> <form action="./postmail.cgi" name="f0" method="post" id="f0"> <fieldset> <legend>■分類</legend> <input type="radio" value="ナシ" name="print" class="print" checked>ナシ <input type="radio" value="アリ" name="print" class="print" >アリ  ( <input type="checkbox" value="銀シールド" name="Kind04[]" class="Kind04" disabled>銀シールド <input type="checkbox" value="銀ペースト" name="Kind04[]" class="Kind04" disabled>銀ペースト <input type="checkbox" value="銅ペースト" name="Kind04[]" class="Kind04" disabled>銅ペースト <input type="checkbox" value="シルク" name="Kind04[]" class="Kind04" disabled>シルク  色 <SELECT name="Kind04[]" class="Kind04" disabled> <OPTION SELECTED VALUE="---">--- <OPTION VALUE="白">白 <OPTION VALUE="黒">黒 <OPTION VALUE="他">他 </SELECT> ) </fieldset><br> <input type="submit" value="確認する" />  <input type="reset" value="リセット" /> </form> </body> </html>

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

IEは戻ってきたときにwindow.onloadを再実行する特徴があります。 なので、初期値設定のfunctionを用意しておくと、いけるはずです。 (今回のケースでためしてみたら、結構面倒だったので説明は省きます)

kuru1125
質問者

お礼

大変参考になりました。 有難うございます。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

内容はみてませんが… 1)確認画面を別ウィンドウにする。   (元の画面は保持されたまま。)   (ブラウザの戻るボタンは効かないけど)  あるいは、ページ遷移せずにスクリプトベースで確認画面に切り替える   (同じページ内なので値は保持される。)   (ブラウザの戻るボタンを押すと前のページへ戻る) 2)クッキーを利用して、値を一時保存しておく。  (ロード時にクッキーがあればセットする) 3)「戻る」もcgi経由にして、cgiで値をセットする。   (ブラウザの戻るボタンだと効かない)  あるいはURLのクエリ部を利用しても同じかな。 などでしょうか。 2)が普通なのかなぁ…?

kuru1125
質問者

お礼

大変参考になりました。 有難うございます。

関連するQ&A