There is such a form skrinshoter.ru/s/240516/pp5TvW?a (on the left a section, on the right an element)

Here is the approximate markup selectors:

<div class="row"> <div class="col-md-4"> <p class="select-head-p">1.Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ</p> <select> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚</option> <option>ΠœΡ€Π°ΠΌΠΎΡ€Π½Π°Ρ ΠΊΡ€ΠΎΡˆΠΊΠ°,пСсок</option> <option>ЩСбСнь</option> <option>ΠœΠΈΠ½Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€ΠΎΡˆΠΎΠΊ</option> <option>Каолин</option> <option>Π₯имичСскиС Ρ€Π΅Π°Π³Π΅Π½Ρ‚Ρ‹</option> </select> </div> <div class="col-md-4"> <p class="select-head-p">2.Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ„Ρ€Π°ΠΊΡ†ΠΈΡŽ/Ρ‚ΠΎΠ²Π°Ρ€</p> <div class="dynamic-form"> </div> <select> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 2ΠΌΠΊΠΌ.</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 3ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 60ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 80ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 150ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 120ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 10ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 50ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 3ΠΌΠΊΠΌ</option> </select> </div> 

How can I add on the click, for example on "+", the exact same markup below? to that was some lines with? also need to have delete this line (if pressed accidentally)

  <script> $(".wrap_send_zay").on("click", ".add__content", function(event){ $(".select-dublicate_dynamic").clone(true).insertBefore(event.target) }); $(".wrap_send_zay").on("click", ".delete__content", function(event){ if($(".wrap_send_zay .select-dublicate_dynamic").length > 1){ $(event.target).closest(".row").detach(); } }); </script> 

this is a slightly upgraded script

    1 answer 1

    As far as I understand the site uses Bootstrap, why not use JQuery? Keep in mind that if there is no jQuery tag, then the answers do not assume its content on the site. In general, use special functions for cloning, adding and deleting in both native JS and JQuery.

    Native javascript

     document.querySelector(".tb").addEventListener("click", function(e){ if(e.target.nodeName == "BUTTON" && e.target.className.indexOf("add") > -1){ newRow = document.querySelector(".row").cloneNode(true); this.insertBefore(newRow, e.target) } if(e.target.nodeName == "BUTTON" && e.target.className.indexOf("del") > -1 && document.querySelectorAll(".row").length > 1){ delRow = e.target.parentNode this.removeChild(delRow) } }) 
     <div class="tb"> <div class="row"> <div class="col-md-4"> <p class="select-head-p">1.Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ</p> <select> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚</option> <option>ΠœΡ€Π°ΠΌΠΎΡ€Π½Π°Ρ ΠΊΡ€ΠΎΡˆΠΊΠ°,пСсок</option> <option>ЩСбСнь</option> <option>ΠœΠΈΠ½Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€ΠΎΡˆΠΎΠΊ</option> <option>Каолин</option> <option>Π₯имичСскиС Ρ€Π΅Π°Π³Π΅Π½Ρ‚Ρ‹</option> </select> </div> <div class="col-md-4"> <p class="select-head-p">2.Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ„Ρ€Π°ΠΊΡ†ΠΈΡŽ/Ρ‚ΠΎΠ²Π°Ρ€</p> <div class="dynamic-form"> </div> <select> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 2ΠΌΠΊΠΌ.</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 3ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 60ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 80ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 150ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 120ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 10ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 50ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 3ΠΌΠΊΠΌ</option> </select> </div> <button class="del">ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ</button> </div> <button class="add">Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ</button> </div> 

    Jquery library

     $(".tb").on("click", ".add", function(event){ $(".row").clone(true).insertBefore(event.target) }); $(".tb").on("click", ".del", function(event){ if($(".tb .row").length > 1){ $(event.target).closest(".row").detach(); } }); 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="tb"> <div class="row"> <div class="col-md-4"> <p class="select-head-p">1.Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ</p> <select> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚</option> <option>ΠœΡ€Π°ΠΌΠΎΡ€Π½Π°Ρ ΠΊΡ€ΠΎΡˆΠΊΠ°,пСсок</option> <option>ЩСбСнь</option> <option>ΠœΠΈΠ½Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€ΠΎΡˆΠΎΠΊ</option> <option>Каолин</option> <option>Π₯имичСскиС Ρ€Π΅Π°Π³Π΅Π½Ρ‚Ρ‹</option> </select> </div> <div class="col-md-4"> <p class="select-head-p">2.Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ„Ρ€Π°ΠΊΡ†ΠΈΡŽ/Ρ‚ΠΎΠ²Π°Ρ€</p> <div class="dynamic-form"> </div> <select> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 2ΠΌΠΊΠΌ.</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 3ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 60ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 80ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 150ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 120ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 10ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 50ΠΌΠΊΠΌ</option> <option>ΠœΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΡ†ΠΈΡ‚ стандарт, фракция 3ΠΌΠΊΠΌ</option> </select> </div> <button class="del">ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ</button> </div> <button class="add">Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ</button> </div> 

    • Thank you very much @Alex Krass, I upgraded the code a bit and I had problems alfa.maxkondaurov.ru here you can find the form skrinshoter.ru/s/260516/3hKv1j?a , I almost did not change the script, the problem is that if several times press ++, then first 2 selectors are cloned, then 4, etc., and you have to add 2 each time - Yegor Tregubenko
    • one
      @ YegorTregubenko, I would advise you to change the markup of the form, otherwise you will have to pervert a lot. Make the main row as col-md-8 (for point 1 and 2) + col-md-4 (point 3 for contacts). Inside the first col-md-8 column, make another row in which there are two col-md-6. In this case, you can already realize normal copying and the form will not lose its appearance. - Alex Krass
    • @ Alex Krass But how can I get rid of <p class = "select-head-p"> 2. Select the fraction / product </ p>, if I want only selections to be added? - Egor Tregubenko
    • @ YegorTregubenko, space them on separate row . And yes, there probably was an array being copied and it was necessary to add a call to eq(0) before clone(true) eq(0) . I corrected the markup to separate <p> and <select> and the code, also added classes for the script, so as not to be confused, look: jsfiddle.net/jLj6k5vy - Alex Krass