下記のようなHTMLが存在する時、追加のボタンを押した時に最後の入力欄を元に複写し、nameを変えたいのですが、どのようにすればよいか、色々やってみたのですがわからなく質問させていただきました。
いわゆるアイテム入力欄の追加をフロントサイドで行いたいのです。
JavascriptあるいはjQueryに詳しい方にぜひご教授頂きたく。
html
1<div id="divisionList"> 2 <div class="card division-item"> 3 <input name="division[0][name]"> 4 <input name="division[0][age]"> 5 <div> 6 <input type="checkbox" name="division[0][peculiarity][]"> 7 <input type="checkbox" name="division[0][peculiarity][]"> 8 </div> 9 </div> 10 <div class="card division-item"> 11 <input name="division[1][name]"> 12 <input name="division[1][age]"> 13 <div> 14 <input type="checkbox" name="division[1][peculiarity][]"> 15 <input type="checkbox" name="division[1][peculiarity][]"> 16 </div> 17 </div> 18 <!-- ここに追加される --> 19</div> 20<button type="button" id="add">追加</button>
javascript
1$(add).on('click', function() { 2 var $divisionTemplate = $('.division-item').last().clone(); // division-itemの最後が複写される 3 4 // ここにname変更のロジック 5 6 $divisionTemplate.appendTo(divisionList); // 入力欄を最後に追記 7});
厄介なのがnameが連想配列であり、連番を持っていること。
コピーした$divisionTemplate内のdivision[数字]...をリネームしたいのです。
上記の場合、4箇所、$divisionTemplate内のdivision[1]...がdivision[2]...になる。
.findあたりで引っ掛けてreplaceかと思っていたのですが、難しく。。。
参考にしたサイトなど
jQueryでフォームを動的に追加/削除
jQueryのセレクタに正規表現・属性フィルタを使う方法!
何かヒントやその他参考にサイトなどでもいただけるとありがたいです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/28 01:41
2019/02/28 02:09