как удалить form'у
Привет!
Есть код. Добавление формы на старницу с двумя textпо нажатию на кнопку.
function CreateFormElement(){
var createtime = new Date().getTime();
var Form = document.getElementById('fms')
var Inner = document.createElement('input');
Inner.type = 'text';
Inner.value = '';
Inner.name = 'size___' + createtime;
Form.appendChild(Inner);
var Form2 = document.getElementById('fms')
var Inner2 = document.createElement('input');
Inner2.type = 'text';
Inner2.value = '';
Inner2.name = 'price___' + createtime;
Form2.appendChild(Inner2);
var Br = document.createElement('br');
Form.appendChild(Br);
}
<input type="button" value="добавить поля формы" onClick="CreateFormElement()"> Как удалить одну из форм, если она стала не нужна?! |
Цитата:
var Form3 = document.getElementById('fms')
var Form4 = document.getElementById('fms')
var Form5 = document.getElementById('fms')
Веселуха же!!! Цитата:
form.removeChild(input); // где form - ссылка на элемент формы, input - ссылка на удаляемое поле. Цитата:
|
Вы очень жестоко меня троллите! Я расстроен! =D
Удалить форму. Нажимаем на кнопку добавить, скажем 3 раза, появляется 3 формы с 2 полями. Мне захотелось удалить 2-ую форму. Как это сделать!? Я за код прошу прощения, ибо вообще не шарю в JS. И тут я именно поэтому. Ну а вообще, спасибо. Хоть и троллите, но помогаете. =) |
Цитата:
Цитата:
http://shpargalkablog.ru/2013/08/app...avascript.html |
Цитата:
Цитата:
Цитата:
<!DOCTYPE html>
<form id="fms"></form>
<script>
var fields = [];
function addField(){
var form = document.getElementById('fms');
var field = document.createElement('div');
var inputs = ['size', 'price'];
for (var i = 0; i < inputs.length; i++) {
var input = document.createElement('input');
input.name = inputs[i] + '[]';
field.appendChild(input);
}
form.appendChild(field); // добавляем на страницу
fields.push(field); // добавляем в наш массивчик
}
function removeField(index) {
var field = fields[index];
if (!field)
return alert('Нет формы с индексом ' + index);
field.parentNode.removeChild(field); // удаляем из страницы
fields.splice(index, 1); // удаляем из массивчика
}
</script>
<input type="button" value="добавить поля формы" onclick="addField()">
<input type="button" value="удалить второе поле" onclick="removeField(1)">
|
Цитата:
|
Цитата:
|
Цитата:
|
Спасибо за ответы! =)
|
Цитата:
|
Товарищи, а если в форму вложить кнопку?!
И удалять вот так!? <button onclick="this.parentNode.removeChild(this);">Вариант 1</button> <button onclick="this.remove();">Вариант 2</button> |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Желательно по нажатию на одну кнопку. Например: поставил курсор в одну форму, где парочка полей и по нажатию на кнопку, удаляешь . А нельзя к форме привязать такую кнопку, которая удаляет и себя и эту форму с полями? |
Цитата:
var field = this.parentNode; field.parentNode.removeChild(field); |
Цитата:
Сейчас попробую )! |
Цитата:
var field = this.parentNode; Записываем в функцию? а, <input type="button" onclock="field.parentNode.removeChild(field);", по кнопке?! Нет ?! ))) |
Цитата:
Обработчик надо через js, при создании кнопки навешивать.
button.onclick = function() {
alert('bla bla');
};
|
Цитата:
Тем не менее не пойму куда запихать var field = this.parentNode; field.parentNode.removeChild(field); |
Цитата:
|
Так и делал. А на форме написал:
<input type='button' value="DELETE" onClick="button.onClick()";/> Реакции нет. =( |
Цитата:
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <script language="javascript">
function CreateFormElement(){
var createtime = new Date().getTime();
var Form = document.getElementById('fms')
var Inner = document.createElement('input');
Inner.type = 'text';
Inner.value = '';
Inner.name = 'size___' + createtime;
Form.appendChild(Inner);
var Br = document.createElement('br');
Form.appendChild(Br);
}
button.onClick = function () {
var field=this.parentNode;
field.parentNode.removeChild(field);
}
--></script>
<body> <form id="fms" method="get" action=""><br /> <input type="button" value="добавить поля формы" onClick="CreateFormElement()"> <input type="button" value="Delete" onClick="button.onClick()" /> </form> </body> </html> На конопку DELETE нажимаю, ничего не происходит. Да, можно одну кнопку. А можно и кнопку, которая будет появляться вместе с полем и по нажатию на нее, удалялось поле. |
Опять это уродство. А что, мой код забраковал? Чем плох?
Цитата:
Цитата:
|
Почему забраковал!? Вот же он:
button.onClick = function () {
var field=this.parentNode;
field.parentNode.removeChild(field);
}
А потом добавил кнопку: <input type="button" value="Delete" onClick="button.onClick()" /> и мое воспаленное воображение думало что удалится любое поле, которое я только захочу. )))))) А что касается второго вопроса. Я даже не понимаю о чем речь =D Можно ваш вариант как должно быть?! =) |
Цитата:
не <input> , а <input />. Также этот доктайп требует обязательный атрибут type у тега <script>. А вот атрибут language возможно даже запрещен. И вобще, один хер документ будет распарсен HTML-парсером, а не XML, так что пофиг. Ну все это по сути мелочи. Если бы браузеры всерьез воспринимали, то ща с бы неработало 99% интернет-страниц ))) Ибо веб-девелоперы в своем большинстве плюют на/не знают все эти "стандарты".
<!DOCTYPE html>
<head>
<title>Untitled Document</title>
</head>
<body>
<form id="fms">
<script>
(function(){
var fields = [];
window.addField = function(){
var form = document.getElementById('fms');
var field = document.createElement('div');
var inputs = ['size', 'price'];
for (var i = 0; i < inputs.length; i++) {
var input = document.createElement('input');
input.name = inputs[i] + '[]';
field.appendChild(input);
}
form.appendChild(field); // добавляем на страницу
fields.push(field); // добавляем в наш массивчик
}
window.removeField = function() {
var field = fields.pop();
if (!field)
return alert('Нечего удалять');
field.parentNode.removeChild(field); // удаляем из страницы
}
})();
</script>
<input type="button" value="добавить поля формы" onclick="addField()">
<input type="button" value="удалить поля" onclick="removeField()">
</form>
</body>
|
Или даже так:
<!DOCTYPE html>
<head>
<title>Untitled Document</title>
</head>
<body>
<form id="fms">
<input type="button" name="add" value="добавить поля формы">
<input type="button" name="remove" value="удалить поля">
<script>
(function(){
var form = document.getElementById('fms');
var fields = [];
var buttons = {
add: form.add,
remove: form.remove
};
buttons.add.onclick = addField;
buttons.remove.onclick = removeField;
updateButtonsState();
function updateButtonsState() {
buttons.remove.disabled = fields.length <= 1;
}
function addField(){
var field = document.createElement('div');
var inputs = ['size', 'price'];
for (var i = 0; i < inputs.length; i++) {
var input = document.createElement('input');
input.name = inputs[i] + '[]';
field.appendChild(input);
}
form.appendChild(field); // добавляем на страницу
fields.push(field); // добавляем в наш массивчик
updateButtonsState();
}
function removeField() {
var field = fields.pop();
field.parentNode.removeChild(field); // удаляем из страницы
updateButtonsState();
}
})();
</script>
</form>
</body>
|
Оу, спасибо за разъяснение! Прям очень порадовало. Не ожидал =)
А удаляется только последние 2 из созданных...а если мне надо удалить поля из середины? По идее они должны быть заполнены. И как только одна из задач решена, поле удаляется, вручную ) |
Цитата:
|
Ок, спасибо большое! =)
|
| Часовой пояс GMT +3, время: 05:30. |