- ベストアンサー
セレクトボックスのアクティブ・非アクティブ切り替え方法と問題解決
- セレクトボックスを使用したフォームのアクティブ・非アクティブ切り替えについて説明します。
- アクティブ・非アクティブの切り替えは正常に動作するが、画面遷移後に戻るとセレクトボックスが非アクティブになってしまう問題が発生しています。
- 原因としては、セレクトボックスの状態が画面遷移後に初期化されているためです。解決するためには、セレクトボックスの状態を画面遷移時に保持する必要があります。
- みんなの回答 (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>
その他の回答 (2)
- auty
- ベストアンサー率58% (284/486)
<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)が非アクティブのときのみ、無効にします。
お礼
ありがとうございました。
- redfox63
- ベストアンサー率71% (1325/1856)
IE6では現象が起きないようです … window.onload = setTF(); などを埋め込んでおいて ページがロードされた段階でdisable属性をセットするようにしてみてはいかがでしょう
お礼
ありがとうございました。
お礼
ありがとうございます。 お教えいただいたとおりに設定したところ、問題は解決いたしました。