Всем привет форумчане. Сразу скажу не особо понимаю в JS, больше в серверной части(PHp). Есть некая форма в ней есть, 3 селекта. 2-3 работают без нареканий и вмешательств не требуют. Но вот с первым надо сделать так, чтобы при нажатие Кнопки
<button>Добавить еще</button>
Происходило добавление еще одной формы такой же, только к select name,input name прибавлялось значения $i(число от 1 до 20), то бишь select name="test_select_$i",input name="start_date_$i".
И при каждом нажатие на кнопку Добавить еще происходило $i++.
Конечный результат.
*** Удалено. Огромные картинки ***
Так как классы убраны то сумма считаться не будет. Могли бы вы добавить к итоговой сумме новые селекты.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Bootstrap DaeteTimePicker</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link rel="stylesheet" href="style.css">
</head>
<body>
<style type="text/css">
.close{
cursor: pointer;
}
</style>
<div class="contener">
<div class="col">
<form class="form-horizontal" enctype='multipart/form-data' action='' method='POST'>
<fieldset>
<legend>Программа1</legend>
<div class="form-group row">
<div class="col">
<div class="">
<select class="form-control" name="test_select">
<option data-price="100" value="1">1</option>
<option data-price="200" value="2">2</option>
<option data-price="300" value="3">3</option>
<option data-price="300" value="4">4</option>
<option data-price="300" value="5">5</option>
<option data-price="300" value="6">6</option>
<option data-price="300" value="7">7</option>
<option data-price="300" value="8">8</option>
<option data-price="300" value="9">9</option>
<option data-price="300" value="11">11</option>
<option data-price="300" value="12">12</option>
<option data-price="300" value="13">13</option>
<option data-price="300" value="14">14</option>
<option data-price="300" value="15">15</option>
<option data-price="300" value="16">16</option>
<option data-price="300" value="17">17</option>
<option data-price="300" value="18">18</option>
<option data-price="300" value="19">19</option>
<option data-price="300" value="20">20</option>
</select>
<div class="bg-danger">Сумма: <span class="summ">0</span> руб.</div>
<div class="bg-warning">Было выбрано:</div>
<div class="list bg-warning"></div>
</div>
</div>
<div class="col">
Начало <input type="date" name="start_date" class="form-control">
</div>
<div class="col">
Конец <input type="date" name="end_date" class="form-control">
</div>
<div class="col">Номер <input type="text" name="num" class="form-control">
</div>
</div>
<button>Добавить еще</button>
</fieldset>
<fieldset>
<legend>Программы2</legend>
<div class="form-group row">
<div class="col">
<div class="box-select">
<select class="select form-control" >
<option data-price="300" value="13">13</option>
<option data-price="300" value="14">14</option>
<option data-price="300" value="15">15</option>
<option data-price="300" value="16">16</option>
<option data-price="300" value="17">17</option>
<option data-price="300" value="18">18</option>
<option data-price="300" value="19">19</option>
<option data-price="300" value="20">20</option>
</select>
<div class="bg-danger">Сумма: <span class="summ">0</span> руб.</div >
<div class="bg-warning">Было выбрано:</div>
<div class="list bg-warning"></div>
</div>
</div>
</div>
</fieldset>
<fieldset>
<legend>Программы3</legend>
<div class="form-group row">
<div class="col">
<div class="box-select">
<select class="select form-control" >
<option data-price="100" value="1">1</option>
<option data-price="200" value="2">2</option>
<option data-price="300" value="3">3</option>
<option data-price="300" value="4">4</option>
<option data-price="300" value="5">5</option>
<option data-price="300" value="6">6</option>
<option data-price="300" value="7">7</option>
<option data-price="300" value="8">8</option>
<option data-price="300" value="9">9</option>
<option data-price="300" value="11">11</option>
<option data-price="300" value="12">12</option>
<option data-price="300" value="13">13</option>
<option data-price="300" value="14">14</option>
<option data-price="300" value="15">15</option>
<option data-price="300" value="16">16</option>
<option data-price="300" value="17">17</option>
<option data-price="300" value="18">18</option>
<option data-price="300" value="19">19</option>
<option data-price="300" value="20">20</option>
</select>
<div class="bg-danger">Сумма: <span class="summ">0</span> руб.</div>
<div class="bg-warning">Было выбрано:</div>
<div class="list bg-warning"></div>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-md-2">
<div class="input-group">
<div class="input-group-text">ИТОГ</div>
<span class="total_span form-control" id="exampleInputAmount">0</span>
<div class="input-group-text">.00</div>
</div>
</div>
<button type="submit" name="button" class="btn btn-primary col-md-2">Оплатиь</button>
</div>
</form>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
(function() {
document.querySelectorAll('.box-select').forEach(e => {
e.querySelector('.select').insertAdjacentHTML('afterBegin', `<option disabled selected></option>`);
[...e.querySelector('.select').children].forEach((e,i) => e.dataset.id = i + 1 );
});
})();
function calc(e) {
let target = e.target.selectedOptions[0];
if (target.parentElement.classList.contains('select')) {
let summ = this.parentElement.querySelector('.summ');
let new_div = `<div class="position">${target.outerHTML.replace(/option/g,'span')}<span class="close">X</span></div>`;
target.disabled = true;
this.children[0].selected = true;
this.parentElement.querySelector('.list').insertAdjacentHTML('beforeEnd', new_div);
summ.textContent = +summ.textContent + +target.dataset.price;
}
total();
}
function del(e) {
if (e.target.classList.contains('close')) {
let data_id = +e.target.previousElementSibling.dataset.id;
let parent = e.currentTarget.parentElement;
parent.querySelector(`.select [data-id="${data_id}"]`).disabled = false;
parent.querySelector(`.select`).children[0].selected = true;
parent.querySelector('.summ').textContent = +parent.querySelector('.summ').textContent - +e.target.previousElementSibling.dataset.price;
e.target.closest('.position').remove();
}
total();
}
function total() {
document.querySelector('.total_span').textContent = [...document.querySelectorAll('.summ')].map(e => +e.textContent).reduce((a,b) => a + b);
}
document.querySelectorAll('.box-select .select').forEach(e => e.addEventListener('change', calc) );
document.querySelectorAll('.box-select .list').forEach(e => e.addEventListener('click', del) );