Поэтому должен быть более простой способ создать это. У меня есть форма со следующим HTML:
<p>Names</p>
<ul class="container1" style="list-style-type:none;">
<li><input type="text" size="10" name="Name" /></li>
</ul>
<input type="button" class="add_form_field" value="+">
Затем я добавил несколько JS для создания новых текстовых полей, если пользователю нужно добавить больше имен:
Взято из: http://www.sanwebcorner.com/2017/02/dynamically-generate-form-fields-using.html
$(document).ready(function() {
var max_fields = 10;
var wrapper = $(".container1");
var add_button = $(".add_form_field");
var x = 1;
$(add_button).click(function(e){
e.preventDefault();
if(x < max_fields){
x++;
$(wrapper).append('<div><input type="text" name="Name"/><a href="#" class="delete">Delete</a></div>'); //add input box
}
else
{
alert('You Reached the limits')
}
});
$(wrapper).on("click",".delete", function(e){
e.preventDefault(); $(this).parent('div').remove(); x--;
})
});
$(document).ready(function() {
var max_fields = 10;
var wrapper = $(".container1");
var add_button = $(".add_form_field");
var x = 1;
$(add_button).click(function(e){
e.preventDefault();
if(x < max_fields){
x++;
$(wrapper).append('<div><input type="text" name="Name"/><a href="#" class="delete">Delete</a></div>'); //add input box
}
else
{
alert('You Reached the limits')
}
});
$(wrapper).on("click",".delete", function(e){
e.preventDefault(); $(this).parent('div').remove(); x--;
})
});function check() {
var temp = document.getElementsByClassName("formElem");
if (document.getElementById("ckbox").checked) {
for (var e = 0; e < temp.length; e++) { // For each element
var elt = temp[e];
elt.required = false;
}
} else {
for (var e = 0; e < temp.length; e++) { // For each element
var elt = temp[e];
elt.required = true;
}
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Names</p>
<ul class="container1" style="list-style-type:none;">
<li><input type="text" size="10" name="Name" /></li>
</ul>
<input type="button" class="add_form_field" value="+">
Проблема в том, что каждый добавляемый вами ввод имеет имя «name», поэтому PHP может получить доступ только к последнему (который перезаписал остальные). Чтобы обойти это, вы можете добавить индекс к имени входа или создать их массив. Это может быть достигнуто так:
<input type="text" name="name[]"...>
Итак, теперь в PHP-скрипте вы можете перебрать этот массив, чтобы получить все входные данные, или внедрить все элементы в переменную:
<?php
$names = implode(", ", $_POST["name"]); // all the names, comma-separated
?>
Теперь вы можете использовать $ names внутри $ f_data, чтобы увидеть все введенные поля.
(Спасибо Фред-II за заголовки о цитатах)
Других решений пока нет …