下記のように、金額範囲を選択するを選択した場合、Jqueryで追加の選択肢が現れそこでまた、諸々選択するUIになっております。
1.ページを進む、戻るを行った場合、金額範囲を選択するのセレクトボタンしか残らず、その後の追加の選択肢が一度消えてしまいます。その状態でまた金額範囲を選択するのセレクトボタンを操作すると一度入力した値は戻って聞きます。
これがUIとしては不親切であるため、一度金額範囲を選択するを選択し、その後の追加の選択肢を入力した場合、ページを進む、戻るしてもその状態を保存していたいのですが、方法はございますでしょうか?
2.加えて、ページをリロードした場合には、当然これらの情報はすべてブラウザから消えてしまい、選択肢も初期化されてしまうのですが、リロードしても状態を保存させておく方法はJS上ございますでしょうか?
よろしくお願い申し上げます。
HTML
1 <h3>金額範囲の設定</h3> 2 <p> 3 <input class="spec" type="radio" name="moneyChoice" value="yes">金額範囲を選択する 4 <br> 5 <input class="spec" type="radio" name="moneyChoice" value="no" checked>金額範囲を選択しない 6 </p> 7 8 <div id="moneyRange"> 9 10 11 <input type="text" name="median" id="median" class="money" style="text-align:right; " name="" value="" placeholder="目安金額(中央値)を入力"> 12 <input type="text" name="step" id="step" class="money" style="text-align:right; " name="" value="" placeholder="ステップ金額(階段値)を入力"> 13 <br> 14 <select name="max" id="max" size=1 disabled style="width:300px;text-align:right;"> 15 <option value=""></option> 16 <option value=""></option> 17 <option value=""></option> 18 </select> 19 <br> 20 <span>下限値は</span> 21 <span id="min"></span> 22 <input id="min2" name="min" type="hidden" name="" value=""> 23 </div>
Javascript
1$(function(){ 2 $('#median,#step').on('change',function(){ 3 $('#max').find('option').remove(); 4 $('#max').prop('disabled', true); 5 var median=parseInt(($('#median').val()).replace(/,/g,"")); 6 var step=parseInt(($('#step').val()).replace(/,/g,"")); 7 if (isNaN(median) || isNaN(step) || step == 0) { 8 $('#min').text(''); 9 return;} 10 var maxChoice= Math.floor(median*2/step); 11 var flg=median>0 && step>0; 12 $('#max').find('option').remove(); 13 for(var i=1; i<=maxChoice; i++){ 14 var num=flg? median+(step*i):''; 15 $('#max').append($('<option>').val(num).text(num)); 16 } 17 $('#max').prop('disabled',!flg); 18if ((median-step)>=0) { 19 $('#min').text(median-step); 20 $('#min2').val(median-step); 21}else{ 22 $('#min').text(0); 23 $('#min2').val(0); 24} 25 }).trigger('change'); 26 27 28 $('#max').change(function(){ 29 var median=parseInt(($('#median').val()).replace(/,/g,"")); 30 var max=$('#max').val(); 31 var bottom= median-(max-median); 32 if (bottom<0) { 33 $('#min').text(0); 34 $('#min2').val(0); 35 }else{ 36 $('#min').text(bottom) 37 $('#min2').val(bottom); 38 }; 39 }); 40});

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/06 11:59 編集
2017/05/06 12:35
2017/05/06 13:10 編集
2017/05/06 15:28
2017/05/06 17:52 編集
2017/05/06 17:55 編集
2017/05/07 03:49