jQueryでフォームのselectからchangeで動作させたものをブラウザバックしても保持したい
以下の様なフォームで
質問1でセレクトから選ぶと、質問2に自動的に選択肢が入るようになっております。
質問1で
野球が選ばれた場合は変数A1から
サッカーが選ばれた場合は変数A2から
質問2のセレクトにセットされます。
ここまでは正常に動作するのですが、
次のページに遷移して、ブラウザバックしてくると
質問1の選択肢が解除されてしまう仕様になっています。
これはそのようにコードが書かれているので当然なのですが、
ブラウザバックしてきた場合に、changeは発動しないので、
仕方なく質問1を初期化しております。
これをブラウザバックしてきても、
質問1と質問2で選んだものが選択されているようにするには、どうしたら良いでしょうか?
どなたかご教授お願い致します。
#HTML
<form method="post" action="○○" name="form1"> <h1>1.好きなスポーツを指定してください。</h1> <select name="sports" id="parent"> <option value="">選択して下さい</option> <option value="A1">野球</option> <option value="A2">サッカー</option> </select> <h1>2.好きなチームを指定してください。</h1> ※先に質問1を指定してください<br> <select name="team" id="child"> <option value="">選択して下さい</option> </select> <input type="submit" value="送信"> </form>#JS
<script> jQuery(function($){ var team = { A1:[ '巨人', 'ヤクルト', '広島', '横浜', '中日', '阪神', ], A2:[ 'ヴェルディ', 'マリノス', 'サンフレッチェ', 'レッズ', 'ベルマーレ', ], }; var noValue = $('#child').html(); //フォーム選択による動作 $('#parent').on('change', function(){ $('#child').html(noValue); var cat = $(this).val(); if(cat){ var item = team[cat]; for(var i = 0; i < item.length; i++){ option = '<option value="' + item[i] + '">' + item[i] + '</option>'; $('#child').append(option); } } }); }); function init() { if ($('#parent option[selected=selected]').attr('selected')) { $('#parent').val($('#parent option[selected=selected]').val()); } else { $('#parent option:first').prop('selected', 'selected'); } } jQuery(function () { init(); $(window).on('pageshow', init); }); </script>回答2件
あなたの回答
tips
プレビュー