Цикл. Добавить несколько форм.
Всем привет форумчане. Сразу скажу не особо понимаю в 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) ); |
Цитата:
|
Часовой пояс GMT +3, время: 20:21. |