Я пытаюсь создать простой пользовательский интерфейс для построителя запросов агрегации MongoDB. В основном пользователь должен нажать на раскрывающийся список (Group By, Sort, Limit и т. Д.), Затем рядом с ним появится другое поле, чтобы выбрать переменную.jQuery динамическая форма добавления виджета
Проблема в том, что поле отображается несколько раз после того, как выбрана первая выпадающая.
[Группировать] [Новое поле] [Новое поле] [New Field]
код [New Field] появляется несколько раз, и я не могу понять, почему.
$(document).ready(function() {
aggStageDropDown = function(counter) {
return "<select id='aggStage'" + counter + "'>\
<option value='unselected'>(Select One)</option>\
<option value='group'>Group</option>\
<option value='match'>Match</option>\
<option value='unwind'>Unwind</option>\
<option value='sort'>Sort</option>\
</select>\
";
}
varDropDown = function(counter) {
return "<select>\
<option value='var1'>var1</option>\
<option value='var2'>var2</option>\
<option value='var3'>var3</option>\
</select>\
";
}
// First elements in HTML
$("body").append("<div class='container'></div>")
$(".container").append("<button class='addGroup'>Add More Fields</button>");
var counter = 1;
$(".addGroup").click(function() {
// Add a <div>, this will contain each group of form elements.
$(".container").append(function(){
return "<div class='controlGroup' id='aggStage" + counter + "'></div>";
});
// For each .controlGroup, add removeControlGroup button and add drop-down menu.
$("#aggStage" + counter).html(function(counter){
return "<button class='removeControlGroup'>X</button> " + aggStageDropDown(counter);
});
counter = counter + 1;
// Function to delete control group.
$(".removeControlGroup").click(function() {
$(this).closest("div").remove();
});
// add drop down next to control
$("select").change(function() {
$(this).parent().append(varDropDown);
console.log($(this).parent());
});
});
});