添付画像のようなフォームを作っています。
設問グループ、設問をそれぞれ追加できるようにしたいです。
下記のコードで一応追加できるのですが、グループを追加した後に設問を追加することができません。
要素数の取得が上手くいっていないです。
(クローン元の要素数、下記のコードで言うと // 設問グループを追加の classLength)
どなたかご教示いただけると幸いです。
html
1<div class="area_question_group_360" id="group1"> 2 <p class="ttl">設問グループタイトル</p> 3 <div class="wrap_input wrap_required group_ttl"> 4 <input placeholder="設問グループタイトルを記述" name="wholeAngleSurveyGroup.title[]" type="text"> 5 <div class="unit_2_center btn_delete_group" data-tabno="1">削除</div> 6 </div> 7 <div class="wrap_input" id="question1"> 8 <span class="unit_2 number">Q. </span> 9 <div class="wrap_input wrap_required"> 10 <input placeholder="回答選択肢を記述" name="wholeAngleSurveyQuestion.title[0][]" type="text"> 11 </div> 12 <div class="unit_2_center button_text_delete_360">削除</div> 13 </div> 14 <div class="area_add_question_360"> 15 <div class="btnarea_left"> 16 <div class="button_text_add_question_360" id="add_question">設問を追加する</div> 17 </div> 18 <div class="note">※選択肢は上限20項目です。</div> 19 </div> 20</div> 21<div class="btnarea_left_add_group"> 22 <div class="btn_goast_purple_add_group" id="add_group">設問グループを追加する</div> 23</div> 24 25// 設問グループを追加 26<script> 27 $(document).on('click', '#add_group', function() { 28 //要素の数をカウントして、複製したフォームのnameを変更する 29 classLength = $('[id^=group]').length; // 要素数 1, 2 30 selector = "#group"+(classLength); // 1つ前のID名 #group1, 2 31 newSelector = "group"+(classLength + 1); // 新しいID group2,3 32 // クローン処理 33 $("#group1").clone(true).insertAfter(selector).attr('id', newSelector); 34 // 複製したものに関する調整処理 35 $("#" + newSelector).find("input").each(function(i, elm){ 36 elm.name = elm.name.replace(/[[0-9]+]/, '[' + classLength + ']'); 37 elm.id = elm.id.replace(/\-[0-9]+\-/, '-' + classLength + '-'); 38 elm.value = null; 39 }); 40 }); 41</script> 42 43// 設問を追加 44<script> 45 $(document).on('click', '#add_question', function() { 46 // 要素の数をカウントして、複製したフォームのnameを変更する 47 classLength = $('[id^=question]').length; // 要素数 1, 2 48 selector = "#question"+(classLength); // 1つ前のID名 #question1, 2 49 newSelector = "question"+(classLength + 1); // 新しいID question2,3 50 // クローン処理 51 $("#question1").clone(true).insertAfter(selector).attr('id', newSelector); 52 // 複製したものに関する調整処理 53 $("#" + newSelector).find("input").each(function(i, elm){ 54 elm.value = null; 55 }); 56 }); 57</script>
回答1件
あなたの回答
tips
プレビュー