Иногда необходимо при заполнении формы данных добавить дополнительные поля, после нажатии соответствующей кнопки.
Есть такая группа полей объединенные в блок param , и кнопка для добавления
<div class="param"> <input type="text" name="status_vendor[]" placeholder="Вендор" > <input type="text" name="status_name[]" placeholder="Название статуса"> <input type="text" name="status_specialization[]" placeholder="Специализация" > <input type="text" name="status_year[]" placeholder="Год" > </div> <input type="button" value="Добавить статус" id="form_status_added">
В имени поля используются квадратные скобки ([]), это обозначает что будут данные переданы в массив.
Для добавления был написан следующий код, где добавление осуществляется перед кнопкой «Добавить статус»:
$("#form_status_added").click(function () { $("<div class='param'><input type='text' name='status_vendor[]' placeholder='Вендор'> <input type='text' name='status_name[]' placeholder='Название статуса'> <input type='text' name='status_specialization[]' placeholder='Специализация'> <input type='text' name='status_year[]' placeholder='Год'></div>" ).insertBefore("#form_status_added"); })
P.S. Для работы скрипта должен быть подключен jquery
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
В случае когда есть числовое значение, которое меняется в зависимости от добавления новых полей. Например
<div class="list_year"> <div class="param"> <label for="year_2013">2013 год</label> <input type="text" id="year_2013" name="year[]"><br> </div> <div class="param"> <label for="year_2012">2012 год</label> <input type="text" id="year_2012" name="year[]"><br> </div> </div> <input type="button" value="Добавить год" id="form_year_added">
Нужно добавить еще и элемент для хранения данной переменной. Допустим:
<span id="form_year_number">2013</span> <style> #form_year_number {display:none;} </style>
Т.к. здесь поля расположены в блоке «list_year», то и добавление новых полей можем прописать в конце этого блока.
$("#form_year_added").on("click",function () { var number_year = $("#form_year_number").text() -1; $("#form_year_number").html(number_year); $("<div class='param'><label for='year_" + number_year + "'>" + number_year + " год</label> <input type='text' id='year_" + number_year + "' name='year[]'></div>" ).appendTo( ".list_year" ); })
Здесь при нажатии на кнопку «Добавить год», берется значение тега #form_year_number, введенного специально для определения последнего добавленного года, уменьшается год на единицу, и прописывается значение это в label и сам input.
Демонстрация рабочего примера:
Прикрепленный файл: form.zip (1.29 Kb)
Хорошая штука, наверное, правда пока еще не пригодится. Вот если б вы показали пример попроще, а именно — пример поля в форме с выпадающим списком для выбора… Если можно. Хотя бы вот такой пример, с вашими комментариями кода.
С уважением, Морозов Юрий.
Уважаемый Юрий Морозов, комментируйте по теме топика. Не надо цепляться к людям с личными просьбами показать для вас элементарные вещи. Ваш пример выпадающего списка это обычный select. Если все-таки select не обычный, а стилизированный читайте тут. Пользуйтесь справочниками и поисковиками.
ок
Вас интересует автозаполнение ?
Прошу прощения, ухожу от общения. Меня прогнал злой админ с ведром на голове.
Здравствуйте Olga! Пожалейте старого дурака, покажите(если можно, с комментариями) как добавить ряд из двух полей определённое число раз(по количеству option в select). Всю ночь промучился, сейчас крыть начнёт, а успокоиться без результата не могу.
Вот эту часть формы хочу добавлять столько раз — сколько option в select:
Вопрос мне не до конца понятен, во вложении вариант решения вашей задачи
1137_form_testrar.rar
Спасибо Olga! Cпасибо, что помогаете разобраться в трудную минуту. Конечно, вы немного неправильно поняли задачу, но ваш вариант где то уже поблизости. Я хотел «поставить на счетчик», то есть добавление возможно лишь ТРИ раза по одной паре: select - input . Вы предлагаете добавить сразу три, но задача не решена, нужно дотянуть скрипт — ничего не добавлять после определённого порога, сколько не жми. Еще раз спасибо, за ваше потраченное время.
С уважением, Морозов Юрий.
Если осталась еще минутка в запасе, просто короткий совет попрошу: справа мне нужны ещё много полей для заполнения, проще простого — вторая колонка. Вопрос такой, две формы из разных колонок в принципе можно отправлять одной большой кнопкой внизу? Y — N?