• 締切済み

disableについて

htmlでフォームメールについて ラジオボタンで、A、Bの二つの選択肢があって、 最初にページにアクセスした時は、Aが選ばれている状態にしています。また、Aにチェックが入っている時は Cというセレクトボックスをdisable(表示しない)にして、 Bが選ばれた時だけ、表示するようにしています。 つまり、最初にページにアクセスした時は、Cは表示されていない状態です。 ところが、 Bにチェックを入れてCのセレクトボックスから値を選択し、 submitで確認画面に飛ばし、確認後、戻るボタンで戻った際、 Cのセレクトボックスがdisableになっていて、選択したはずの値が 選択されていない状態になってしまいます。 ラジオボタンのチェックはきちんとBにチェックが入っているのに。 これはIEだけで起こる現象のようで、firefoxやsafariの場合は、 選択されたCの値が表示されています。 おそらく、onloadされるかされないか。の問題なのかと思いますが、 どのようにすれば、IEでもFFやsafariと同じ状態にできるのか、 調べても解決できず、困っています。 どうぞ宜しくお願いいたします。

みんなの回答

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

IE対策ならonload処理を入れてやれば? <script> window.onload=function(){ check(); document.getElementById("hogeA").onclick=function(){check()} document.getElementById("hogeB").onclick=function(){check()} } function check(){ document.getElementById("fuga").style.display=document.getElementById("hogeB").checked?"":"none"; document.getElementById("fuga").disabled=!document.getElementById("hogeB").checked; } </script> <form action="y.php"> <p> <input type="radio" name="hoge" id="hogeA" value="A" checked /><label for="hogeA">A</label> <input type="radio" name="hoge" id="hogeB" value="B" /><label for="hogeB">B</label> <select name="fuga" id="fuga"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <input type="submit" value="go!" /> </p> </form>

consinne
質問者

お礼

yambejp様 ご連絡がおそくなり、申し訳ございません。 ご教授いただいたようにonload処理を入れたところ、 上手くいきました! ありがとうございました!

  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.1

「B」の onchange で 「C」を表示するんだから、戻ったときに 「B」がチェックされていても 「C」が表示されない状態というブラウザがあってもしかたないですね。 ならば、Windowに focusがあたったときに 「B」がチェックされているか否かを見て、チェックされていたら 「C」を表示する関数を追加したらどうでしょう。

consinne
質問者

お礼

okmotokun様 ご回答、ありがとうございます。 focusがあった時の関数の書き方をあまり知らないので、 ちょっと調べてみたいと思います。 ありがとうございました。

関連するQ&A