• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Ajaxで加工したページの初期化について)

Ajaxで加工したページの初期化について

このQ&Aのポイント
  • Ajaxでページの初期化を行う方法について質問しています。ページ上には複数のテキストボックスやセレクトボックスが存在し、セレクトボックスAで選択した値に基づいてセレクトボックスBやテキストボックスの値を表示しています。また、セレクトボックスAの選択状態によってはセレクトボックスBには予め選択肢が入っています。質問者はリセットボタンを押した際にセレクトボックスBを初期状態に戻したいと考えており、さらにセレクトボックスCに別の選択肢を入れ直したいとのことです。その際に一括で初期化し、Ajax処理を行いたいと質問しています。
  • 質問者はページのツールバーのページ更新ボタンを押すと、ページがリロードされて初期化されるため、Ajaxでセレクトボックスなどの変更をするプログラムを組んだとのことです。しかし、ページリロード後にAjax処理が実行されないため、どのようにすれば効率的に初期化し、必要な処理を行えるかについて質問しています。
  • 質問者は一つずつセレクトボックスやテキストボックスのデータを削除して、値をセットする方法が効率が悪いと感じており、ページを初期化した後に必要なセレクトボックスやテキストボックスだけに対してAjax処理を行いたいと考えています。最適な方法が知りたいと質問しています。

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5320/13881)
回答No.2

質問者さんがどのようなプログラム、HTMLを書かれているのか分からないので、具体的な回答が難しいですが、やりたいことは以下のようなモノなのではないでしょうか。 <script> $(function() { $("#sel1").change(function () {changeSel1();}); $("#sel2").change(function () {changeSel2();}); $("#btn_reset").click(function () {changeReset();}); changeReset(); }); function changeSel1 () { var selVal1 = $('#sel1').val(); $("#sel2").children().remove(); switch (selVal1) { case "1": $('#sel2').append('<option value="1">選択肢1</option>'); $('#sel2').append('<option value="4">選択肢4</option>'); break; case "2": $('#sel2').append('<option value="2">選択肢2</option>'); $('#sel2').append('<option value="5">選択肢5</option>'); break; case "3": $('#sel2').append('<option value="3">選択肢3</option>'); $('#sel2').append('<option value="6">選択肢6</option>'); break; default: $('#sel2').append('<option value="1">選択肢1</option>'); $('#sel2').append('<option value="2">選択肢2</option>'); $('#sel2').append('<option value="3">選択肢3</option>'); $('#sel2').append('<option value="4">選択肢4</option>'); $('#sel2').append('<option value="5">選択肢5</option>'); $('#sel2').append('<option value="6">選択肢6</option>'); break; } changeSel2(); } function changeSel2 () { var selVal2 = $('#sel2').val(); $("#sel3").children().remove(); switch (selVal2) { case "1": $('#sel3').append('<option value="6">選択肢6</option>'); break; case "2": $('#sel3').append('<option value="5">選択肢5</option>'); break; case "3": $('#sel3').append('<option value="4">選択肢4</option>'); break; case "4": $('#sel3').append('<option value="3">選択肢3</option>'); break; case "5": $('#sel3').append('<option value="2">選択肢2</option>'); break; case "6": $('#sel3').append('<option value="1">選択肢1</option>'); break; default: $('#sel3').append('<option value="1">選択肢1</option>'); $('#sel3').append('<option value="2">選択肢2</option>'); $('#sel3').append('<option value="3">選択肢3</option>'); $('#sel3').append('<option value="4">選択肢4</option>'); $('#sel3').append('<option value="5">選択肢5</option>'); $('#sel3').append('<option value="6">選択肢6</option>'); break; } } function changeReset () { $("#sel1").val(null); changeSel1(); } </script> <select name="sel1" id="sel1" size="10"> <option value="1">選択肢1</option> <option value="2">選択肢2</option> <option value="3">選択肢3</option> </select> <select name="sel2" id="sel2" size="10"> </select> <select name="sel3" id="sel3" size="10"> </select> <input type="button" id="btn_reset" value="リセット">

noname#223023
質問者

お礼

t_ohtaさん ご回答ありがとうございます。 プログラムもご丁寧にありがとうございました! ちょっと難しいですが、何度も見て、あーなるほどーという感じで、その解釈があっているか疑問ですが(笑 私が今作っているプログラムの中に入れ込んで使わせて頂きます! お忙しい中本当にありがとうございました!! またわからないことがありましたらぜひよろしくお願いいたします!! 今回は本当にありがとうございました!!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5320/13881)
回答No.1

window.location.reload(); を実行するとブラウザはページの再読込を行います。 再読込をすると言う事は全てご破算にして最初からやり直すと言う事なので、HTMLやJavaScriptファイルなどを読み込み直して最初っから処理をやり直しますので、window.location.reload(); 以降の処理は無かったことにされてしまいます。 セレクトボックスAの状態によって他の要素の内容が変わるのであれば、リセットボタンを押したらセレクトボックスAを未選択状態にする事で、他も連動して中身が変わるようにプログラムするのがいいのではないでしょうか。 セレクトボックスBはセレクトボックスAの状態によって変わるようにされているようですから、セレクトボックスAが未選択ならセレクトボックスBには全ての選択肢を表示するような処理を予め書いておけば初期状態に戻りますし、同様に他の要素を書き換える処理の所にデフォルト値に戻るような処理を書いておけば、セレクトボックスAを未選択状態にする事で全て連動して初期状態に戻せると思いますよ。

noname#223023
質問者

お礼

t_ohtaさん ご回答ありがとうございました! window.location.reload(); 以降の処理は無かったことにされてしまうんですね。。 デフォルト値に戻るような処理というのはどのようにすれば宜しいのでしょうか。 このようにしてみたのですが、うまくできなくて、 $('#tb1').val($('#tb1').defaultValue); もし宜しければ教えて頂けましたら嬉しいです。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。

関連するQ&A