Вы можете использовать onclick
обработчик событий, чтобы получить входное значение для текстового поля. Убедитесь, что вы присвоили полю уникальный id
атрибут, чтобы к нему можно было безопасно обращаться через document.getElementById()
:
Если вы хотите динамически добавлять элементы, у вас должен быть контейнер для их размещения. Например, файл <div id="container">
. Создавайте новые элементы с помощью document.createElement()
и используйте appendChild()
для добавления каждого из них в контейнер. Вам может быть интересно вывести значимый name
атрибут (например, name="member"+i
для каждого из динамически сгенерированных <input>
s, если они должны быть отправлены в форме.
Обратите внимание, что вы также можете создавать <br/>
элементы с помощью document.createElement('br')
. Если вы хотите просто вывести какой-то текст, вы можете использовать document.createTextNode()
вместо этого.
Кроме того, если вы хотите очищать контейнер каждый раз, когда он будет заполнен, вы можете использовать hasChildNodes()
и removeChild()
вместе.
<html>
<head>
<script type='text/javascript'>
function addFields(){
// Number of inputs to create
var number = document.getElementById("member").value;
// Container <div> where dynamic content will be placed
var container = document.getElementById("container");
// Clear previous contents of the container
while (container.hasChildNodes()) {
container.removeChild(container.lastChild);
}
for (i=0;i<number;i++){
// Append a node with a random text
container.appendChild(document.createTextNode("Member " + (i+1)));
// Create an <input> element, set its type and name attributes
var input = document.createElement("input");
input.type = "text";
input.name = "member" + i;
container.appendChild(input);
// Append a line break
container.appendChild(document.createElement("br"));
}
}
</script>
</head>
<body>
<input type="text" id="member" name="member" value="">Number of members: (max. 10)<br />
<a href="#" id="filldetails" onclick="addFields()">Fill Details</a>
<div id="container"/>
</body>
</html>
См. Рабочий образец в этом JSFiddle .
Uncaught TypeError: Cannot call method 'appendChild' of undefined
input.className += ' someCSSClass';
name
атрибут. При отправке формы значения будут передаваться только элементам формы с атрибутом name.Попробуйте этот код JQuery для динамического включения формы, поля и удаления / удаления поведения:
$(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="mytext[]"/><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--; }) });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="container1"> <button class="add_form_field">Add New Field <span style="font-size:16px; font-weight:bold;">+ </span> </button> <div><input type="text" name="mytext[]"></div> </div>
См. Демо здесь
источник
<button type="button" ...>
и проблема решена.