はじめまして。
JQueryを使用しボタンを押下した際の処理を書いているのですが、
上手く動作しないので分かる方がいればご教授頂けますか。
●処理内容
・初期状態では「備考」エリアは1つ表示されている
・項目を追加を押下すると「タイトル」と「内容」を含んだ「備考」エリアが追加される
・「備考」エリアが追加されるたびにタイトルの末尾は連番で振られる
・削除を押すと該当の「備考」エリアが削除される
●困っていること
「備考」エリアを3つ以上に増やし
2番目の「備考」エリアを削除すると、
タイトルが「備考3」のままになる、
inputのnameの末尾が3のままになる。
希望としてはタイトルやnameは連番にしたいのですが方法が分からないのでご教授頂けますか。
JQuery
1<script> 2jQuery(document).ready(function($) { 3 var prefix_order_list = 'order_list_'; // 品目入力欄のname属性の接頭辞 4 5 // "品目の追加"ボタンを押した場合の処理 6 $('#btn_add').click(function(){ 7 // 品目入力欄を追加 8 var len_list = $('#order_list > div.list').length+1; 9 10 // alert(len_list); 11 12 var new_list = '<div class="list"><h3 class="tit03 col-xs-9 col-sm-10">' + '追加記述' + len_list + '</h3>'; 13 new_list += '<div class="col-xs-3 col-sm-2 button_del"></div>'; 14 new_list += '<div class="form-group col-xs-12">'; 15 new_list += '<label for="exampleInputName16" class="">タイトル</label>'; 16 new_list += '<input type="text" class="form-control " id="' + 'addtit' + len_list + '" placeholder="" name="'+ 'addtit' + len_list + '" >'; 17 new_list += '</div>'; 18 new_list += '<div class="form-group col-xs-12">'; 19 new_list += '<label for="'+ 'addcont' + len_list +'" class="">'+ '内容' +'</label>'; 20 new_list += '<textarea class="form-control " rows="3" id="' + 'addcontent' + len_list + '"' + 'name="' + 'addcontent' + len_list + '"></textarea>'; 21 new_list += '</div>'; 22 new_list += '</div>'; 23 24 $('#order_list').append(new_list); 25 26 // 削除ボタンの一旦全消去し、配置し直す 27 $('#order_list button').remove(); 28 len_list++; 29 // alert(len_list); 30 31 for (var i = 0; i < len_list; i++) { 32 var new_btn = '<button type="button" class="btn btn-danger btn-block">削除</button>'; 33 34 $('#order_list > div .button_del').eq(i).append(new_btn); 35 } 36 }); 37 38 // 削除ボタンを押した場合の処理 39 $(document).on('click', '#order_list button', function(ev) { 40 // 品目入力欄を削除 41 var idx = $(ev.target).parent().index(); 42 $('#order_list > div.list').eq(idx).remove(); 43 44 var len_list = $('#order_list > div.list').length; 45 46 // 入力欄がひとつになるなら、削除ボタンは不要なので消去 47 if (len_list == 1) $('#order_list button').remove(); 48 49 // 入力欄の番号を振り直す 50 for (var i=0; i<len_list; i++) { 51 $('#order_list > div.list').eq(i).children('button').attr('name', prefix_order_list + i); 52 $('#order_list > div.list').eq(i).children('input[type="text"]').attr('name', prefix_order_list + i); 53 } 54 }); 55}); 56</script>
HTML
1<form class="form-inline"> 2 <div class="row" id="order_list"> 3 4 <div class="list"> 5 <h3 class="tit03 6 col-xs-9 7 col-sm-10 8 ">備考1</h3> 9 10 11 <div class="form-group col-xs-12"> 12 <label for="addtit1" class="">タイトル</label> 13 <input type="text" class="form-control" id="addtit1" name ="addtit1" placeholder=""> 14 15 </div> 16 17 <div class="form-group col-xs-12"> 18 <label for="addcont1" class="">内容</label> 19 <textarea class="form-control " rows="3" id="addcontent1" name="addcontent1"></textarea> 20 </div> 21 </div> 22 23 </div> 24 25 26 27 28 <div class="row"> 29 30 <div class="col-xs-12 31 col-sm-10 32 col-sm-offset-1 33 "> 34 <div class="row"> 35 36 <div class="col-xs-12 37 col-sm-6 38 margin_b20 39 "> 40 <button type="button" id="btn_add" class="btn btn-primary btn-lg btn-block">項目を追加</button> 41 </div> 42 43 44 45 </div> 46 47 </div> 48 </form>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/23 06:13
2017/03/23 06:18
2017/03/23 06:28