• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セレクトボックスを使用した、フォームのアクティブ・非アクティブの切り替え)

セレクトボックスのアクティブ・非アクティブ切り替え方法と問題解決

このQ&Aのポイント
  • セレクトボックスを使用したフォームのアクティブ・非アクティブ切り替えについて説明します。
  • アクティブ・非アクティブの切り替えは正常に動作するが、画面遷移後に戻るとセレクトボックスが非アクティブになってしまう問題が発生しています。
  • 原因としては、セレクトボックスの状態が画面遷移後に初期化されているためです。解決するためには、セレクトボックスの状態を画面遷移時に保持する必要があります。

質問者が選んだベストアンサー

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

「戻る」というのはブラウザの仕様によってだいぶ違いますね。 前も同様の質問があがっていましたが、IEは戻るときもある程度 リロードされます。なのでonloadで処理すればよいでしょう。 (firefoxはキャッシュを読んでくれるようなのでonloadは無視してくれます) したがって#1さんの処理に近くなりますが、onload時にfunctionを指定する ならかっこをつけてはいけません。 window.onload = setTF()→window.onload = setTF それとformのnameはすでに非推奨になっているので、idで管理した方が よいでしょう。総じてこんな感じ <script> function setTF() { var f=document.getElementById('mail'); var flag = f.Data.value==""?false:true; f.B.disabled = flag; f.C.disabled = flag; } window.onload=setTF; </script> <form method="post" id="mail"> <table> <tr> <th>セレクトボックス(A)</th> <td><select name="Data" onchange="setTF()"> <option value="">アクティブ</option> <option value="non-active" selected>非アクティブ</option> </select></td> </tr><tr> <th>テキスト(B)</th> <td><input size="4" type="text" name="B" disabled /> 才</td> </tr><tr> <th>セレクトボックス(C)</th> <td><select name="C" disabled> <option>選択肢1</option> <option>選択肢2</option> </select></td> </tr><tr> <td colspan="2" class="submit"><input type="submit" value="送信する" /><input type="reset" value="リセット" /></td> </tr> </table> </form>

qweasd_9
質問者

お礼

ありがとうございます。 お教えいただいたとおりに設定したところ、問題は解決いたしました。

その他の回答 (2)

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

<form>タグの設定が優先されるようです。 そこで、<input><select>タグから     disabled="disabled" を取り除き、onloadプロパティを追加したらどうでしょう。 ------------------------------------------------------------- onload=function() { // alert(document.mail.Data.selectedIndex); if (document.mail.Data.selectedIndex==1) { document.mail["B"].disabled = true; document.mail["C"].disabled = true; } } ------------------------------------------------------------- セレクトボックス(A)が非アクティブのときのみ、無効にします。

qweasd_9
質問者

お礼

ありがとうございました。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

IE6では現象が起きないようです … window.onload = setTF(); などを埋め込んでおいて ページがロードされた段階でdisable属性をセットするようにしてみてはいかがでしょう

qweasd_9
質問者

お礼

ありがとうございました。

関連するQ&A