Динамическое добавление входных элементов в форму
Я читал много блогов и сообщений о динамическом добавлении наборов полей, но все они дают очень сложный ответ. То, что мне нужно, не так уж сложно.
мой HTML код:
<input type="text" name="member" value="">Number of members: (max. 10)<br />
<a href="#" id="filldetails">Fill Details</a>
Итак, пользователь введет целочисленное значение (я проверяю проверку с помощью javascript) в
2 ответов:
вы могли бы использовать
onclickобработчик событий для получения входного значения для текстового поля. Убедитесь, что вы даете полю уникальныйidатрибут, так что вы можете ссылаться на него безопасно черезdocument.getElementById():если вы хотите динамически добавлять элементы, вы должны иметь контейнер, где их разместить. Например,
<div id="container">. Создавайте новые элементы с помощьюdocument.createElement(), и использоватьappendChild()чтобы добавить каждый из них в контейнер. Возможно, Вам будет интересно вывести значимый (например,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.
попробуйте этот код 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--; }) });
<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>см. Демо Здесь
Comments