Динамическое добавление элементов к форме
Submitted by Ромка on Ср, 17/09/2008 - 17:02
При разработке модуля Inner poll возникла задача динамического добавления элементов к форме. С помощью библиотеки jQuery эта задача решается в два счета.
Для начала пишем функцию:
function addInput() { /* default-id — скрытый элемент формы, из которого берется id для первого создаваемого элемента */ var id = document.getElementById("default-id").value; id++; /* в форму с именем testform добавляем новый элемент */ $("form[name=testform]").append('<div id="div-' + id + '"><input name="input-' + id + '" id="input-' + id + '" value="' + id + '"><a href="javascript:{}" onclick="removeInput(\'' + id + '\')">Удалить</a></div>'); /* увеличиваем счетчик элементов */ document.getElementById("default-id").value = id; }
Затем создаем форму:
<form name="testform" action="test.php" method="POST"> <input type="hidden" id="default-id" value="0"> <input type="submit" value="Отправить!"> </form> <a href="javascript:{}" onclick="addInput()">Добавить текстовое поле</a><br>
Вот и всё. Здесь размещен работающий пример. Кроме добавления элементов, также приведен пример их удаления.
43 Comments
Это же jQuery :)
Submitted by andypost on
Думаю стоит заменить document.getElementById("default-id").value; на родные $("#default-id").val(); или как оно там
JS никто не отменял
Submitted by Штудер (не проверено) on
Не стоит пренебрегать основами. document.getElementById("default-id") работает значительно шустрее.
Я к примеру поклонник jQuery, но если можно обойтись без него (не создав себе гемороя) то именно это я и сделаюю
form[name=testform]
Submitted by M.Juanito (не проверено) on
а если мне нужно добавить строку в fieldset который находится внутри формы. то как переделать эту строку ? $("form[name=testform]").append( ?
создаешь div с айдишником
Submitted by Anonymous (не проверено) on
создаешь div с айдишником "fieldset". в скрипте меняешь на это:
$("div[id=fieldset]").append.....
мало ли, мож еще пригодиться =)
скажите, Роман, а значения из
Submitted by Anonymous (не проверено) on
скажите, Роман, а значения из этих полей передаются нормально в POST?
Да, без проблем передаются.
Submitted by Ромка on
Да, без проблем передаются.
Не получается проверить
Submitted by Guide (не проверено) on
Не получается проверить правильность (например только цифры), при использовании drupal_get_form. То есть вообще по моему друпал на это не рассчитан.
Реферат нивелирование трассы
Submitted by fred (не проверено) on
Реферат нивелирование трассы Реферат по геодезии нивелирование трассы Генрі Хаггард Творчість Генрі Хаггарда Жуль Верн Твори Жуль Верна kapraldr3
спасибо! как-раз то что
Submitted by Anonymous (не проверено) on
спасибо! как-раз то что искал! регистрация ооо спб
А вот и нет, данные из
Submitted by vit (не проверено) on
А вот и нет, данные из динамически созданного инпута передаются на сервер только в эксплорере, в опере и гугл-хроме ничего не передается. В мозиле не пробовал. Похоже, с созданием новых инпутов не все так просто как тут описано :)
А вот и нет
Submitted by vit (не проверено) on
Сори, нашел у себя ошибку (хотя с точки зрения верстки это не была ошибка).
Так что все работает во всех браузерах :). С одной оговоркой. Если поля формы стоят в табличке, то, в аштмл -коде тэги самой формы не должны стоять между тэгами тэйбл и тээр, иначе, работает только в эксплорере.
Заранее извиняюсь за может
Submitted by Etheriq (не проверено) on
Заранее извиняюсь за может быть ламерский вопрос, но не могли бы Вы написать "красивый" способ определения сколько было создано полей ввода и их имена в скрипте-обработчике (test.php).
Спасибо!
var_dump($_POST);
Submitted by Anonymous (не проверено) on
var_dump($_POST);
Баг?
Submitted by Anonymous (не проверено) on
А скажите, пожалуйста. Почему поля отказываются добавляться, если в форме уже находится два или более инпутов? и как такое возможно исправить. Спасибо.
А где функция removeInput
Submitted by petrik (не проверено) on
Все работает, но вот не могу удалить ? ? ?
function removeInput(id)
Submitted by Anonymous (не проверено) on
function removeInput(id) {
$("#div-" + id).remove();
}
о рамблере
Submitted by ramblike (не проверено) on
Я почему-то все больше и больше начинаю любить Rambler. А вы?
Вопрос
Submitted by Sanyo (не проверено) on
а где файлик test.php ?
Форму добавления и удаления нашел на примере, а вывод забитых данных не увидел (
И есть ли более новые примеры?
Не получается.
Submitted by Feniksss89 (не проверено) on
Может быть вопрос не по Вашему примеру, но всё же я уже час убил, и не могу найти причины. Я в ссылках "Добавить" и "Удалить" написал class. И вешаю на них обработчики клика $(".addinput").click(function() {...
Для добавления всё работает отлично, но для удаления не работает $(".removeinput").click(function() {... Вот не могу понять почему. Т.е. при загрузке страницы уже прописана ссылка "Добавить" с классом addinput - и это работает. А класс removeinput добавляется. И в чём может быть причина, как считаете?
Динамическое добавлении
Submitted by Alexandr (не проверено) on
Динамическое добавлении обработчиков событий не работает.
Можно воспользоваться следующим методом:
В
$(".addinput").click(function() {...
, сразу прописывать событие onclick() к добавляемому элементу.Другие способы ищи в гугле.
Спасибо!
Submitted by Anonymous (не проверено) on
Спасибо!
субтитры к сериалам субтитры
Submitted by Anonymous (не проверено) on
субтитры к сериалам субтитры к сериалам субтитры к фильмам subtitles tv subs конспекты дипломные работы wallpapers tv show wallpapers tv show subtitles tv series subtitles путешествия география movies subtitles seropol5
movies subtitles путешествия
Submitted by Anonymous (не проверено) on
movies subtitles путешествия все о путешествиях tv wallpapers wallpapers seropol5
Реферат по геодезии
Submitted by fred (не проверено) on
Реферат по геодезии нивелирование трассы Реферат нивелирование трассы Творчість Тоніно Гуерра Тоніно Гуерра Твори Астрід Ліндгрен Астрід Ліндгрен kapraldr3
Реферат по геодезии
Submitted by fred (не проверено) on
Реферат по геодезии нивелирование трассы Реферат нивелирование трассы Творчість Тоніно Гуерра Тоніно Гуерра Твори Астрід Ліндгрен Астрід Ліндгрен kapraldr3
более свежие примеры?
Submitted by Михалыч (не проверено) on
А можно увидеть еще более свежие примеры? Честно говоря не очень могу разобраться
Как быть с mysql?
Submitted by Илья Соловьев on
Разобрался, но не могу понять один момент как мне организовать запихивание в БД?
кусочек кода на странице загрузки:
Я выставил не текстовое поле на добавление, а "загрузку файла" (file)
*Что бы у администратора сайта была функция мультизагрузки картинок подходящих к одному разделу*
Добавил в 4 строке type="file"
Но не могу понять что передается в action файл формы при добавлении новых полей?
Не могли бы Вы немного разъяснить?
Вопрос новичка. Мне непонятно
Submitted by Tatiana (не проверено) on
Вопрос новичка. Мне непонятно причем тут <?php ?> может надо было ?
<?php<script></script>?>
Submitted by Tatiana (не проверено) on
<script></script>
вопрсо по данному скрипту
Submitted by Anonymous (не проверено) on
http://www.romka.eu/blog/dinamicheskoe-dobavlenie-elementov-k-forme
хороший пример!!!
вопрос по нему..
почему не происходит удаления элемента?
сори нащел!!! все в
Submitted by Anonymous (не проверено) on
сори
нащел!!! все в коментах
вопрос снят
отлично все работает
то что не тестировалось - не работает.
Submitted by free (не проверено) on
Пример хороший.
чтобы вставить поле до кнопки отправки, которая обыно является последним элементом формы, нужно снчала кнопку убрать, потом добавить элемент, потом добавить кнопку обратно.
function addInput() {
var id = document.getElementById("default-id").value;
id++;
$("#submit-button").remove(); // удаляем кнопку отправки формы
$("form[name=zakaz]").append('HTML КОД ЭЛЕМЕНТА'); // добавляем нужный элемент
$("form[name=zakaz]").append('HTML КОД КНОПКИ ОТПРАВКИ ФОРМЫ'); // добавляем кнопку обратно
document.getElementById("default-id").value = id;
}
function removeInput(id) {
$("#dd-" + id).remove();
id--; // сохраняем порядок нумерации
document.getElementById("default-id").value = id; // сохраняем порядок нумерации
}
упс! removeInput должен быть
Submitted by free (не проверено) on
упс! removeInput должен быть таким
function removeInput(id) {
$("#dd-" + id).remove();
document.getElementById("default-id").value = document.getElementById("default-id").value - 1;
}
ИМХО ОЧЕНЬ ПРОСТО
Submitted by Рома Чичин on
function add()
{
var list = document.getElementById('list')
var input = document.createElement('input')
input.type="checkbox"
input.id="12"
list.appendChild(input)
}
Мой вариант
Submitted by Angbor (не проверено) on
Сперва - спасибо за хорошую идею.
Выкладываю свой немного поправленный код под сови нужды
в результате вставляем в таблицу, и каждая новая строка таблицы содержит инпут с уникальным ID и уникальным ID для инпута.
Удаляем опять же строку таблицы - тем самым мы решаем вопрос товарища free о кнопке.
Кнопку помещаем после таблицы, посему не нужно никаких удалений/добавлений
Удаление не должно работать....
Submitted by Anonymous (не проверено) on
Если мы динамически добавляем ссылку, то такая конструкция удаления не будет работать, точнее не должна работать. будет работать если:
ссылку формировать, например с добавлением id и class, при этом используя class как контейнер id:
УДАЛИТЬ
при этом сама функция удаления будет такая:
$(\'#ваше значение\').delegate(\'#udaleniestrok\', \'click\', function(){
var id = $(this).attr(\'class\');
$("#tr"+id).remove();
});
Удаление не должно работать....
Submitted by Anonymous (не проверено) on
Если мы динамически добавляем ссылку, то такая конструкция удаления не будет работать, точнее не должна работать. будет работать если:
ссылку формировать, например с добавлением id и class, при этом используя class как контейнер id:
УДАЛИТЬ
при этом сама функция удаления будет такая:
$(\'#ваше значение\').delegate(\'#udaleniestrok\', \'click\', function(){
var id = $(this).attr(\'class\');
$("#tr"+id).remove();
});
А как отправить
Submitted by Nikolai (не проверено) on
извиняюсь за ламерство но подскажите как данные с массива потом
отправить на почту.
по одному полю я знаю с формы по имени через пост принимаем в переменную которую потом помещаем в тело письма .
$Hear = $_POST['Hear'];
$mailto = "еее.ууу@mail.ru";
$message =
"
INFO:
'бла бла бла' :" .$Hear = $_POST['Hear'];
буду признательный если подскажете
Если мы динамически добавляем
Submitted by Anonymous (не проверено) on
Если мы динамически добавляем ссылку, то такая конструкция удаления не будет работать, точнее не должна работать. будет работать если:
ссылку формировать, например с добавлением id и class, при этом используя class как контейнер id:
УДАЛИТЬ
при этом сама функция удаления будет такая:
$(\'#ваше значение\').delegate(\'#udaleniestrok\', \'click\', function(){
var id = $(this).attr(\'class\');
$("#tr"+id).remove();
});
Если мы динамически добавляем
Submitted by Anonymous (не проверено) on
Если мы динамически добавляем ссылку, то такая конструкция удаления не будет работать, точнее не должна работать. будет работать если:
ссылку формировать, например с добавлением id и class, при этом используя class как контейнер id:
УДАЛИТЬ
при этом сама функция удаления будет такая:
$(\'#ваше значение\').delegate(\'#udaleniestrok\', \'click\', function(){
var id = $(this).attr(\'class\');
$("#tr"+id).remove();
});
немного исправим
Submitted by Anonymous (не проверено) on
Если мы динамически добавляем ссылку, то такая конструкция удаления не будет работать, точнее не должна работать. будет работать если:
ссылку формировать, например с добавлением id и class, при этом используя class как контейнер id:
УДАЛИТЬ
при этом сама функция удаления будет такая:
$(\'#ваше значение\').delegate(\'#udaleniestrok\', \'click\', function(){
var id = $(this).attr(\'class\');
$("#tr"+id).remove();
});
как его использовать
Submitted by Anonymous (не проверено) on
как его правильно использовать потому что если вставить как есть то пишется ошибка
Parse error: syntax error, unexpected T_VAR in Z:\home\localhost\ssss\ytg.php on line 3
Дело в том что в примере не
Submitted by free (не проверено) on
Дело в том что в примере не правильно написано что это код PHP.
На самом деле это код JavaScript.
И естественно, если Вы вставите его в
<?php
?>
ничего не будет работать.