プロが教えるわが家の防犯対策術!

ラジオボタンと連動したチェックボックスがあります。
ラジオボタンを選択し、さらにチェックボックスに入力後、「確認」をクリックして確認ページから「戻る」の時にチェックボックスの入力内容の値が保持されておらず、困っています。
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>

「確認ページからフォームページに「戻る」時」の質問画像

A 回答 (2件)

IEは戻ってきたときにwindow.onloadを再実行する特徴があります。


なので、初期値設定のfunctionを用意しておくと、いけるはずです。
(今回のケースでためしてみたら、結構面倒だったので説明は省きます)
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/16 14:01

内容はみてませんが…



1)確認画面を別ウィンドウにする。
  (元の画面は保持されたまま。)
  (ブラウザの戻るボタンは効かないけど)
 あるいは、ページ遷移せずにスクリプトベースで確認画面に切り替える
  (同じページ内なので値は保持される。)
  (ブラウザの戻るボタンを押すと前のページへ戻る)

2)クッキーを利用して、値を一時保存しておく。
 (ロード時にクッキーがあればセットする)

3)「戻る」もcgi経由にして、cgiで値をセットする。
  (ブラウザの戻るボタンだと効かない)
 あるいはURLのクエリ部を利用しても同じかな。

などでしょうか。
2)が普通なのかなぁ…?
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/16 14:02

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