ECサイトの送付先選択画面にて下記のようなラジオボタンを用意しています。
HTML
1<div class="info addr_info"> 2 <h2>お届け先の入力</h2> 3 <ul class="addr_choice radio_list"> 4 <li> 5 <label id="optionLbl01"> 6 <input type="radio" name="receiver_user_type" id="receiver_user_type_X" value="X" onclick="copydata()"> 7 <span class="radioLabel">注文者の住所にお届けする</span> 8 </label> 9 </li> 10 <li> 11 <label id="optionLbl01"> 12 <input type="radio" name="receiver_user_type" id="receiver_user_type_E" value="E" onclick="javscript:copydata();showReceiverForm();"> 13 <span class="radioLabel">注文者の情報を元にお届け先を編集する</span> 14 </label> 15 </li> 16 <li> 17 <label id="optionLbl01"> 18 <input type="radio" name="receiver_user_type" id="receiver_user_type_N" value="N" onclick="addrclick()"> 19 <span class="radioLabel">新しいお届け先を入力する</span> 20 </label> 21 </li> 22 </ul> 23</div>
##実現したいこと
下二つの選択肢をチェックすると送付先入力フォームが表示され、編集・新規入力ができるようになっています。
入力した情報がエラーのまま次の画面に進もうとすると、バリデーションでこのページにリダイレクトするようにしたいのですが、その際ラジオボタンのチェック状態を維持したままリダイレクトさせたいです。
(フォームを表示したままの状態でリダイレクトさせたいいため)
##試したこと
本サイトに同様の質問があったのでこちらのlocalStrageを使ってチェックボタンの値を保持しようとしたのですがうまくいきませんでした。
下記はラジオボタンが配置されているhtmlに記述したコードです。
HTML
1<script> 2 window.addEventListener('DOMContentLoaded', function (e) { 3 var status=localStorage.getItem('status'); 4 console.log(status); 5 if(x=document.querySelector('[name=receiver_user_type][value='+status+']')) x.checked=true; 6 [].forEach.call(document.querySelectorAll('[name=receiver_user_type]'),function(x){ 7 x.addEventListener('change',function(e){ 8 localStorage.setItem('status',e.target.value); 9 console.log(e.target.value); 10 }); 11 }); 12 }); 13</script>
コンソールとデベロッパーツールで取れている値を確認してみたのですが、リロード時にそれまで保持していた値がリセットされたような動きになりました。
リロードしても保存できる方法についてご教示いただけると大変助かります。
よろしくお願いいたします。
2019/02/20追記
ユーザー関数を記述しているjsファイルの内容を記載します。
JavaScript
1function copydata() { 2 var copydata_value = ""; 3 for(i=0;i<document.form1.receiver_user_type.length;i++){ 4 if(document.form1.receiver_user_type[i].checked == true){ 5 copydata_value = document.form1.receiver_user_type[i].value; 6 } 7 } 8 if (copydata_value == 'X' || copydata_value == 'E') { 9 document.form1.receiver.value=document.form1.sender.value; 10 document.form1.receiver_kana.value=document.form1.sender_kana.value; 11 12 document.form1.receiver_office_name.value = document.form1.office_name.value; 13 document.form1.receiver_office_name_kana.value = document.form1.office_name_kana.value; 14 document.form1.receiver_office_dept_name.value = document.form1.office_dept_name.value; 15 16 document.form1.emergency2_1.value=document.form1.emergency1_1.value; 17 document.form1.emergency2_2.value=document.form1.emergency1_2.value; 18 document.form1.emergency2_3.value=document.form1.emergency1_3.value; 19 20 document.form1.post1.value=document.form1.sender_post1.value; 21 document.form1.post2.value=document.form1.sender_post2.value; 22 changeReceiverArea(document.form1.sender_area.value); 23 document.form1.address.value=document.form1.sender_addr.value; 24 document.form1.address2.value=document.form1.sender_addr2.value; 25 }else { 26 document.form1.receiver.value=""; 27 document.form1.receiver_kana.value=""; 28 document.form1.receiver_office_name.value = ''; 29 document.form1.receiver_office_name_kana.value = ''; 30 document.form1.receiver_office_dept_name.value = ''; 31 set_null_emergency(2); 32 // set_null_emergency(3); 33 document.form1.post1.value=""; 34 document.form1.post2.value=""; 35 changeReceiverArea(0); 36 document.form1.address.value=""; 37 document.form1.address2.value=""; 38 } 39}
Javascript
1function addrclick() { 2 var addrclick_value = ""; 3 for(i=0;i<document.form1.receiver_user_type.length;i++){ 4 if(document.form1.receiver_user_type[i].checked == true){ 5 addrclick_value = document.form1.receiver_user_type[i].value; 6 } 7 } 8 9 if (addrclick_value == "A") { 10 // $('.js_modal').fadeIn(); 11 document.form1.receiver.value = ""; 12 document.form1.receiver_kana.value = ""; 13 set_null_emergency(2); 14 document.form1.address.value = ""; 15 document.form1.address2.value = ""; 16 changeReceiverArea(0); 17 document.form1.post1.value = ""; 18 document.form1.post2.value = ""; 19 20 return false; 21 } else { 22 document.form1.receiver.value = ""; 23 document.form1.receiver_kana.value = ""; 24 set_null_emergency(2); 25 document.form1.address.value = ""; 26 document.form1.address2.value = ""; 27 changeReceiverArea(0); 28 document.form1.post1.value = ""; 29 document.form1.post2.value = ""; 30 } 31 32 document.form1.receiver_office_name.value = ''; 33 document.form1.receiver_office_name_kana.value = ''; 34 document.form1.receiver_office_dept_name.value = ''; 35}
JavaScript
1function showReceiverForm() { 2 jQuery('.receiver_address').show(); 3}
JavaScript
1jQuery(function(){ 2 jQuery('input[name="receiver_user_type"]').click(function(){ 3 if(this.value == 'X'){ 4 jQuery('.receiver_address').hide(); 5 }else{ 6 jQuery('.receiver_address').show(); 7 } 8 }); 9 10 jQuery('#receiver_user_type_X').trigger('click'); 11 jQuery.fn.autoKana('#sender_name', '#sender_kana', {katakana : true}); 12 jQuery.fn.autoKana('#receiver_name', '#receiver_kana', {katakana : true}); 13 jQuery.fn.autoKana('#sender_office_name', '#sender_office_name_kana', {katakana : true}); 14 jQuery.fn.autoKana('#receiver_office_name', '#receiver_office_name_kana', {katakana : true}); 15});
回答2件
あなたの回答
tips
プレビュー