Приведенный ниже код позволит вам добавить столько входных данных, сколько вы хотите, для нескольких групп ввода.
Группы ввода должны быть заключены в div с классом .input-wrapper
с атрибутами placeholder
и name
, они используются для автоматического создания атрибутов ввода (включая уникальный id
).
Кнопка удаления всегда удаляет последний ввод, который соответствует шаблону выбора, таким образом, когда высохраните информацию, индексы будут в последовательности.
Я немного упростил код для демонстрационных целей и прокомментировал его полностью.
Дайте мне знать, если это не было то, что выв надежде на
Демо
// Add click event to .add-input buttons
$(document).on("click", ".add-input", function() {
// Move up DOM tree to nearest wrapper
el = $(this).closest(".input-wrapper");
// Store name and placeholder for group
name = el.attr("name");
placeholder = el.attr("placeholder");
// Count number of existing inputs by checking which have an id that starts with wrapper name
// Using name here, in addition to input, so that you could add other inputs into the group wrapper if needed
// You may want to switch .children to .find if you want to add more wrappers
count = el.children("input[id^=" + name + "]").length;
// Add to index
next = parseInt(count + 1);
// Append input
el.append("<input id='" + name + "-" + next + "' placeholder='" + placeholder + " " + next + "'>");
});
// Add click event to .add-input buttons
$(document).on("click", ".delete-input", function() {
// Move up DOM tree to nearest wrapper to get name
name = $(this).closest(".input-wrapper").attr("name");
// Move up DOM tree to nearest wrapper and then find last input that matches pattern and delete it
$(this).closest(".input-wrapper").children("input[id^=" + name + "]").last().remove();
});
input,
label {
width: 100%;
margin-bottom: 4px;
}
.input-wrapper {
border: 1px solid black;
padding: 4px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input name="name" placeholder="Name">
<input name="email" placeholder="Email">
<div name="course" class="input-wrapper" placeholder="Course">
<label>Courses</label>
<button class="add-input">Add</button>
<button class="delete-input">Delete</button>
<input id='course-1' placeholder='Course 1'>
<input id='course-2' placeholder='Course 2'>
</div>
<div name="qualification" class="input-wrapper" placeholder="Qualification">
<label>Qualifications</label>
<button class="add-input">Add</button>
<button class="delete-input">Delete</button>
</div>