Есть скрипт добавления блоков на страницу https://jsfiddle.net/7su5s63d/
// Добавлене блоков
var div = '';
var next_id = 3;
add_block.onclick = function() {
next_id++;
var div = document.createElement('div');
div.id = 's'+next_id;
div.className = 'text block';
var template = '<div class="labels-intro"><input type="text" class="form-control form-about w100" placeholder="Введите имя поля"></div><span class="glyphicon glyphicon-remove test" aria-hidden="true" id="del'+next_id+'">удалить</span>';
div.innerHTML = template;
main.appendChild(div);
// Удаление блоков
document.getElementById(div.id).addEventListener('click', function(e) {
this.remove();
});
};
Проблема в том, что в добавляемом блоке есть input и по задумке удаляться блок должен только когда в нём будет нажат span со словом удалить, но удаляется блок даже если просто на input нажать. Т.е. ввести в input ничего нельзя, он сразу удаляется.
Нужно событие click
вешать конкретно на span
, а вы искали елемент по ид div.id
тоесть это всетаки див, вот он при любом клике и удалялся
// Добавлене блоков
var div = '';
var next_id = 3;
add_block.onclick = function() {
next_id++;
var div = document.createElement('div');
div.id = 's' + next_id;
div.className = 'text block';
var template = '<div class="labels-intro"><input type="text" class="form-control form-about w100" placeholder="Ваше имя"></div><span class="glyphicon glyphicon-remove test" aria-hidden="true" id="del' + next_id + '">удалить</span>';
div.innerHTML = template;
main.appendChild(div);
document.getElementById('del' + next_id).addEventListener('click', function(e) {
div.remove();
});
};
<div id="main">
<span id="add_block">+ добавить блок</span><br>
<div id="s1" class="text block">one</div>
<div id="s2" class="text block">two</div>
<div id="s3" class="text block">three</div>
</div>
// Добавлене блоков
var div = '';
var next_id = 3;
add_block.onclick = function() {
next_id++;
var div = document.createElement('div');
div.id = 's'+next_id;
div.className = 'text block';
var template = '<div class="labels-intro"><input type="text" class="form-control form-about w100" placeholder="Ваше имя"><span class="glyphicon glyphicon-remove test" aria-hidden="true" id="del'+next_id+'">удалить</span></div>';
div.innerHTML = template;
main.appendChild(div);
// Удаление блоков
document.getElementById('del'+next_id).addEventListener('click', function(e) {
this.parentNode.remove();
});
};
<div id="main">
<span id="add_block">+ добавить блок</span><br>
<div id="s1" class="text block">one</div>
<div id="s2" class="text block">two</div>
<div id="s3" class="text block">three</div>
</div>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть сайт, у которого есть поиск по каталогу(например, вывод товара по слову в названии), нужно этот товар отсортировать по цене (например,...
Как добавить содержимое поля <textarea></textarea> в переменную через Javascript?