リロード時もコンボボックスの内容を保持したい

このQ&Aのポイント
  • 1つ目のセレクトボックスで選んだ都道府県に対応した市を、2つ目のセレクトボックスに反映させるところまではうまく行くのですが、ページをリロード、あるいは遷移先から戻ってくると、1つ目のセレクトボックスを別のものに再選択しないと2つ目が選べない状態になります。
  • 対応方針として、ページロード時に都道府県を選んでいれば、2つ目のセレクトボックスを再構築するサブルーチンの処理に回すことを考えたのですが、再構築がうまく行かず困っています。
  • 現状のHTMLを活かしたまま、Javascriptの変更のみで要望の動きを実現させる方法を教えていただけないでしょうか。
回答を見る
  • ベストアンサー

リロード時もコンボボックスの内容を保持したい

リロード時もコンボボックスの内容を保持したい select要素を使ったコンボボックスの作成で困っています。 1つ目のセレクトボックスで選んだ都道府県に対応した市を、 2つ目のセレクトボックスに反映させるところまではうまく行くのですが、 ページをリロード、あるいは遷移先から戻ってくると、 1つ目のセレクトボックスを別のものに再選択しないと2つ目が選べない状態になります。 対応方針として、ページロード時に都道府県を選んでいれば、 2つ目のセレクトボックスを再構築するサブルーチンの処理に回すことを考えたのですが(サンプルのコメントアウト部分です。)、 引数に問題があるのか、どうも再構築がうまく行きません。 現状のHTMLを活かしたまま、Javascriptの変更のみで 要望の動きを実現させる方法をご教示いただけないでしょうか。

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

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

ある程度の精度が必要であれば、クッキーに保存しておいて onloadで処理をすることです。

bkm2407
質問者

お礼

ご回答ありがとうございました。 サンプルのソースコードを追記したかったのですが、、方法がわからないので、 勝手ながら、一旦質問を閉じたいと思います。

bkm2407
質問者

補足

ご回答ありがとうございます。 できるならば、Cookieは使いたくないところです。 質問時にソースが貼れなかったので、以下に貼り付けます。 ------------------------------ //スクリプト部分 <script> function ConnectedSelect(selIdList){ for(var i=0;selIdList[i];i++) { var CS = new Object(); var obj = document.getElementById(selIdList[i]); if(i){ CS.node=document.createElement('select'); var GR = obj.getElementsByTagName('optgroup'); while(GR[0]) { CS.node.appendChild(GR[0].cloneNode(true)); obj.removeChild(GR[0]); } obj.disabled = true; } if(selIdList[i+1]) { CS.nextSelect = document.getElementById(selIdList[i+1]); obj.onchange = function(){ConnectedSelectEnabledSelect(this)}; } // if(obj.value !== "#") { // alert(obj.value); // ConnectedSelectEnabledSelect(obj); // } obj.ConnectedSelect = CS; } } function ConnectedSelectEnabledSelect(oSel){ var oVal = oSel.options[oSel.selectedIndex].value; if(oVal) { while(oSel.ConnectedSelect.nextSelect.options[1])oSel.ConnectedSelect.nextSelect.remove(1); var eF = false; for(var OG=oSel.ConnectedSelect.nextSelect.ConnectedSelect.node.firstChild;OG;OG=OG.nextSibling) { if(OG.label == oVal) { eF = true; for(var OP=OG.firstChild;OP;OP=OP.nextSibling) oSel.ConnectedSelect.nextSelect.appendChild(OP.cloneNode(true)); break; } } oSel.ConnectedSelect.nextSelect.disabled = !eF; } else { oSel.ConnectedSelect.nextSelect.selectedIndex = 0; oSel.ConnectedSelect.nextSelect.disabled = false; } } </script> //HTML部分に続く

関連するQ&A

  • データと直結したコンボボックスについて

    初めて質問します。 VB6とオラクルでの開発でコンボボックスを使います。 ユーザーの要望は、途中まで入力した内容に合うデータをコンボボックスのリストに表示して欲しいとのことなのですが、VBに入っている通常のコンボボックスで対応できるんでしょうか? また、出来なければ利用可能なツールなどがありましたら教えてください。

  • セレクトボックスの連動について

    https://secure.sakura.ad.jp/member/password.php こちらのページにあるように「都道府県」を選択すると 一度リロードされ、選択された「都道府県」に基づく 「市区町村」のセレクトボックスが表示されるようになります。 おそらく、セレクトボックスに「onchange」イベントハンドラを つけて、処理しているかと思いますが、具体的な方法が 分かりません。 どなたか分かる方、教えて頂けますでしょうか?

    • ベストアンサー
    • HTML
  • フォームの内容を更新しても保持したい

    セレクトボックスやテキストなどのフォームで 途中までせっかく入力しても ブラウザの更新ボタンを押すと情報が消えてしまいます。 しかし、更新しても情報が消えないようにすることは可能でしょうか? どうしても子窓終了時にその情報を親窓に反映させるため、親窓を途中でリロードしなければいけません。その時にそれまで親窓で入力した情報が消えてしまってはかなり凹んで使う気になれないと思いますので、可能であればアドバイスを頂けないでしょうか? 自分自身にリンクが張ってある場合で送信ボタンを押した時など更新以外でページが切り替わるときは保持していなくても良いです。 よろしくお願いします。

  • mysqlからのコンボボックスについて教えてください

    はじめまして。 mysql+php初心者の者ですが、 ご教授をよろしくお願いいたします。 [table 1] id  種類 ---------- 1 野菜 2  果物 3  麺 [table 2] id   key   名前 ---------------------- 1  1 にんじん 2   1 たまねぎ 3   1   ほうれん草 4  2 りんご 5   2   バナナ 6  3 うどん 7   3   ラーメン [table 1]のid と、[table 2]のkeyが 対応するように、連動したコンボボックスを作りたいと思って頑張っています。 コンボボックス1には、[table 1]の、種類が入り コンボボックス2には、[table 1]の種類に連動して、[table 2]の名前が選択できるように したいと思っています。 たとえば、コンボボックス1で「果物」を選択した場合、 コンボボックス2では、「りんご」「バナナ」がコンボボックスに 表示されて選べるようになるようにするです。 単純に、mysqlからセレクトフォームに表示することはできましたが、 連動がどうやればいいのか、色々調べましたが 力不足で分かりませんでした。 コンボボックスを連動させるために、[table2]に「key」のフィールドを加えたので、 改良しようと思っております。 ご教授をよろしくお願いいたします。 環境 ------- WindowsXP mysql4.0 php4.2 Apache1.3

    • ベストアンサー
    • PHP
  • 携帯サイトでコンボボックスの横幅指定

    htmlで携帯サイトを構築中です。 コンボボックスを表示するとその横幅がリストの文字列の長さにより変化します。 1画面中の複数のコンボボックスの横幅を固定したいのですが、携帯サイトでも可能でしょうか? PCサイトなら <select style="width=30%"> で可能なのですが、携帯サイトではこの設定は認識されませんでした。 cssを使う・使わないどちらでも構いませんので教えて下さい。 携帯キャリアはdocomo、au、softbankには対応したいです。

  • コンボボックスの自動更新について

    コンボボックスの自動更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中には「入力」ボタンとコンボボックスと テキストボックスがあります。 コンボボックスは、「ABCDEF」と6つのリストがあります。 ユーザーフォーム起動時には、コンボボックスは空欄で コンボボックスから、入力したい商品を選んで、入力ボタンを押して コンボボックスとテキストボックスの内容を入力・コンボボックスを 空欄に戻しています。 これを、「A」を選んで入力ボタンをおしたら「B」が選ばれる。 「B」を選んで入力ボタンをおしたら「C」が選ばれるといったように コンボボックスに表示されるリストを自動で更新することは できないでしょうか? Select case などを利用して組み立てようとしたのですが、 数時間以上調べても出来ません。 教えていただけると助かります。

  • postで引き渡したしたデータは、いつまで保持しているのですか?

    たとえば検索サイト等で、<select>タグとかで選択した都道府県データをpostで次のページにデータを引き渡したとします。次に別のページに遷移したとき、そのpostで引き渡したデータ、つまり、都道府県のデータはまだ持っているのでしょうか?また、もし持っていないなら、持たせる方法はあるでしょうか?

    • ベストアンサー
    • HTML
  • コンボボックス 選択後のカーソル制御

    ACCESS2007のデータベースを利用しています。 テキストボックス1、コンボボックス1、テキストボックス2が上から順に並んでおり、コンボボックス1で表示されるリストから一つを選ぶと、カーソルがテキストボックス2に遷移します。 (ACCESS2007のオプションの詳細設定のところで、フィールド移動時の動作をフィールドの先頭に移動)に設定しています。 コンボボックス1の選択後、コンボボックス1の先頭にカーソル移動するには、どのような処理をVBAに追加すればよいでしょうか? Private Sub コンボボックス1_AfterUpdate() テキストボックス1.SetFocus コンボボックス1.SetFocus With Me!コンボボックス1 .SelStart = 0 .SelLength = 0 End With End Sub ではうまく動作しませんでした。どうぞ宜しくお願い致します。

  • Rails コンボボックスの値の保持について(select_tag,c

    Rails コンボボックスの値の保持について(select_tag,collection_select) こんにちは。 Ruby on Railsで簡単な一覧検索画面を作成中の者です。 検索時の検索条件にコンボボックスを使用しており、検索後にコンボボックスの値を保持したいのですが、どうしてもできません。 どなたかお分かりの方がおられましたらご教授いただけないでしょうか。 下記、作成中のソースです。 Viewの検索条件部 <%- form_tag({:action => "search"},{:method=> "GET"}) do -%> <th class="U" align="left" width="10%"><label for="userNm">ユーザー名</label></th> <td width="90%"><%= text_field_tag :userNm, @userNm %></td>  <th class="U" align="left" width="10%"><label for="authCd">社員権限</label></th> <td width="90%">  <%= collection_select(:auth, :authCd, Auth.find(:all, :order => "AUTH_CD"), :id, :AUTH_NM, :include_blank => true) %>  <td align="center"><%= submit_tag '検索' %></td> Controllerクラス: def search #画面パラメータから検索条件を作成 c = Condition.new # ユーザー名 userNm = "" if params[:userNm] userNm = params[:userNm] c.and "USER_NM", "LIKE", "%#{userNm}%" end # コンボボックスの値を取得 if params[:auth] && !params[:auth]["authCd"].blank? c.and "AUTH_CD", params[:auth]["authCd"] end # 検索処理 @users = User.paginate(:order => "USER_ID asc", :per_page => 5, :page => params[:page], :conditions => c.where) # 検索条件保持 @userNm = params[:userNm] # コンボボックスの値が保持できない if params[:auth] @auth_authCd = params[:auth]["authCd"] end respond_to do |format| format.html # index.html.erb format.xml { render :xml => @users } end end 見づらくて申し訳ありませんが、ざっと上記のようになっています。 もう1つの検索条件であるユーザー名(userNm)は保持できるのですが、コンボボックス(社員権限)の値が保持できません。 select_tagや、selectも使ってみたのですが、どちらも同じ結果でした。 コンボボックスの条件は、Authモデルから値を読込み、一番上は空白にする。というものです。 どのように記述すれば保持できるのか色々調べてみたのですが、結局分からず仕舞いでした。。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • Ruby
  • コンボボックス1の条件でコンボ2選択肢をクエリで動的に取得したい

    早速ですが、現在PHP&Javascriptでサイト構築中です。 その中で、コンボボックス1で選択した条件でコンボボックス2の 選択肢を動的に変化させたいのですが、画面ロード時に全てのパターン を読み込むのではなく(これはサンプルを見つけました)、 コンボ1選択時にクエリを発行してコンボ2の選択肢を取得して 反映させることは可能でしょうか。 可能であれば、具体的な実現方法をご教示願えませんでしょうか。 未熟故、的外れな質問でしたらご指摘下さい。 よろしくお願いいたします。

専門家に質問してみよう