jqueryを使用して「追加する」ボタンを押すたびに、
「.addArea」内に年と月のプルダウンメニューが追加されていく機能を
作りたいです。
下記の様に作成すると、年と月を変更していても、
追加されたプルダウンメニューによって上書きされてしまいます。
(1つ目の.select_wrapにあるyearを「2010」,monthを「5」としていても、
2つ目.3つ目と.select_wrapを追加すると既に表示されているyearとmonthが「選択してください」に
戻ってしまう)
class名で広義に指定しているせいかと思い、.select_wrapにid="select_wrap_'+(i)+'"を付与。
そのidの子要素にあるselect[name=year]にappendしても同じように上書きされてしまいます。
selectが追加されてもoptionが上書きされないようにするためには、
どのような書き方が良いのでしょうか?
良い書き方があれば教えて頂きたいです。
● HTML <div class="addArea"> <!-- 追加するボタンを押すと、ここに年と月のプルダウンメニューがどんどん追加されていく--> </div> <button type="button" id="Add_btn"追加する</button>
●jquery //ボタンを押すたびにプルダウンメニューが表示される $(document).on('click', '#Add_btn', function(){ var i = $(".addArea .select_wrap").size()+1; let selecter = '<div class="select_wrap"><select name="year[]"></select><select name="month[]"></select></div>'; $('.addArea').prepend(selecter); i++; //年と月の取得 let d = new Date(); let year = d.getFullYear(); let month = d.getMonth() + 1 //年のoptionを作成し、selectに挿入処理 for (let y = 1500; y <= year; y++) { let yOption = "<option value=" + y + ">"+ y +"</option>"; if(y == 2000){ yOption += "<option value='-1' selected>"+ "選択してください" +"</option>" } $('.select_wrap').find('select[name=year]').append(yOption); } //月のoptionを作成し、selectに挿入処理 for (let m = 0; m <= 12; m++) { if(m == 0){ let mOption = "<option value='-1' selected>"+ "選択してください" + "</option>" $('.select_wrap').find('select[name=month]').append(mOption); }else{ let mOption = "<option value=" + (m) + ">"+ (m) +"</option>" $('.select_wrap').find('select[name=month]').append(mOption); } } return false; });
使用言語:
HTML
jQuery
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。