naoval luthfi
naoval luthfi

Reputation: 771

Add new row with button jquery then remove the button

I'm trying to create a table that have "add" button to add new rows in every new row then remove the previous button. I have a code like this.

 $("#insert-more").click(function () {
        $("#mytable").each(function () {
            var tds = '<tr>';
            jQuery.each($('tr:last td', this), function () {
                tds += '<td>' + $(this).html() + '</td>';
            });
            tds += '</tr>';
            if ($('tbody', this).length > 0) {
                $('tbody', this).append(tds);
            } else {
                $(this).append(tds);
            }
        });
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="mytable" class="table table-hover table-striped">
       <thead>
         <th>Check</th>
         <th>Nama Klien</th>
         <th>Nama File</th>
         <th>Ukuran</th>
         <th>Bahan</th>
         <th>Jumlah</th>
         <th></th>
        </thead>
        <tbody>
         <tr>
          <td>
            <label class="checkbox">
              <input type="checkbox" value="" data-toggle="checkbox">
            </label>
          </td>
          <td>
           <select class="form-control">
             <option value="default">KLIEN :</option>
             <option value="default">ELV</option>
             <option value="default">ZYTA</option>
             <option value="default">LOUSALUNA</option>
             <option value="default">MYLADY</option>
            </select>
           </td>
           <td>
            <select class="form-control">
             <option value="default">FILES :</option>
             <option value="default">TWOTONE 1</option>
             <option value="default">TWOTONE 1</option>
             <option value="default">TWOTONE 1</option>
             <option value="default">TWOTONE 1</option>
             <option value="default">TWOTONE 1</option>
            </select>
           </td>
           <td>
            <select class="form-control">
             <option value="default">UKURAN :</option>
             <option value="default">110</option>
             <option value="default">115</option>
             <option value="default">120</option>
             <option value="default">130</option>
             <option value="default">150</option>
            </select>
           </td>
           <td>
            <select class="form-control">
             <option value="default">BAHAN :</option>
             <option value="default">MAXMARA</option>
             <option value="default">VOAL INDO</option>
             <option value="default">VOAL INDIA</option>
             <option value="default">DIAMOND</option>
             <option value="default">SILKY</option>
            </select>
           </td>
           <td><input class="form-control" type="number" name="" value=""></td>
           <td><button id="insert-more" class="btn btn-primary" type="button" name="button">ADD</button></td>
          </tr>
         </tbody>
       </table>

Or you can see it here https://jsfiddle.net/f6xcqy2s/. In that code the add button will show up in every rows, but i wanted the add button just show up in new row only, so there will be one button only. Do you know the way?

Upvotes: 0

Views: 1020

Answers (4)

Shiladitya
Shiladitya

Reputation: 12181

Here you go with a solution https://jsfiddle.net/f6xcqy2s/4/

$(document).on('click', "#insert-more", function () {
    $('#mytable tbody')
    	.append(`<tr>${$(this).closest('tr').html()}</tr>`);
    $(this).remove();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="mytable" class="table table-hover table-striped">
  <thead>
    <th>Check</th>
    <th>Nama Klien</th>
    <th>Nama File</th>
    <th>Ukuran</th>
    <th>Bahan</th>
    <th>Jumlah</th>
    <th></th>
  </thead>
  <tbody>
    <tr>
      <td>
        <label class="checkbox">
          <input type="checkbox" value="" data-toggle="checkbox">
        </label>
      </td>
      <td>
        <select class="form-control">
          <option value="default">KLIEN :</option>
          <option value="default">ELV</option>
          <option value="default">ZYTA</option>
          <option value="default">LOUSALUNA</option>
          <option value="default">MYLADY</option>
        </select>
      </td>
      <td>
        <select class="form-control">
          <option value="default">FILES :</option>
          <option value="default">TWOTONE 1</option>
          <option value="default">TWOTONE 1</option>
          <option value="default">TWOTONE 1</option>
          <option value="default">TWOTONE 1</option>
          <option value="default">TWOTONE 1</option>
        </select>
      </td>
      <td>
        <select class="form-control">
          <option value="default">UKURAN :</option>
          <option value="default">110</option>
          <option value="default">115</option>
          <option value="default">120</option>
          <option value="default">130</option>
          <option value="default">150</option>
        </select>
      </td>
      <td>
        <select class="form-control">
          <option value="default">BAHAN :</option>
          <option value="default">MAXMARA</option>
          <option value="default">VOAL INDO</option>
          <option value="default">VOAL INDIA</option>
          <option value="default">DIAMOND</option>
          <option value="default">SILKY</option>
        </select>
      </td>
      <td><input class="form-control" type="number" name="" value=""></td>
      <td><button id="insert-more" class="btn btn-primary" type="button" name="button">ADD</button></td>
    </tr>
  </tbody>
</table>

In the solution, amount of jQuery code is very less.

Hope this will help you.

Upvotes: 0

Jino Shaji
Jino Shaji

Reputation: 1105

Here first we create an event handler function and assign it to clickHandler. Then when we append the button into the table row after that we assign that click handler to the newly added button using the code as$("#insert-more").click(clickHandler);.

$( document ).ready(function() {
 
 var clickHandler = function() {
    
    $("#mytable").each(function () {
     
        var tds = '<tr>';
        jQuery.each($('tr:last td', this), function () {
            tds += '<td>' + $(this).html() + '</td>';
        });
        tds += '</tr>';
        if ($('tbody', this).length > 0) {          
            $('tbody', this).append(tds);
            
        } else {
           
            $(this).append(tds);
        }
    });
    $(this).remove();
    $("#insert-more").click(clickHandler);
};
$("#insert-more").click(clickHandler);

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="mytable" class="table table-hover table-striped">
                                    <thead>
                                        <th>Check</th>
                                    	<th>Nama Klien</th>
                                    	<th>Nama File</th>
                                    	<th>Ukuran</th>
                                    	<th>Bahan</th>
                                    	<th>Jumlah</th>
                                    	<th></th>
                                    </thead>
                                    <tbody>
                                        <tr>
                                        	<td>
                                            <label class="checkbox">
                                                <input type="checkbox" value="" data-toggle="checkbox">
                                            </label>
                                          </td>
                                        	<td>
                                            <select class="form-control">
                                              <option value="default">KLIEN :</option>
                                              <option value="default">ELV</option>
                                              <option value="default">ZYTA</option>
                                              <option value="default">LOUSALUNA</option>
                                              <option value="default">MYLADY</option>
                                            </select>
                                          </td>
                                          <td>
                                            <select class="form-control">
                                              <option value="default">FILES :</option>
                                              <option value="default">TWOTONE 1</option>
                                              <option value="default">TWOTONE 1</option>
                                              <option value="default">TWOTONE 1</option>
                                              <option value="default">TWOTONE 1</option>
                                              <option value="default">TWOTONE 1</option>
                                            </select>
                                          </td>
                                          <td>
                                            <select class="form-control">
                                              <option value="default">UKURAN :</option>
                                              <option value="default">110</option>
                                              <option value="default">115</option>
                                              <option value="default">120</option>
                                              <option value="default">130</option>
                                              <option value="default">150</option>
                                            </select>
                                          </td>
                                          <td>
                                            <select class="form-control">
                                              <option value="default">BAHAN :</option>
                                              <option value="default">MAXMARA</option>
                                              <option value="default">VOAL INDO</option>
                                              <option value="default">VOAL INDIA</option>
                                              <option value="default">DIAMOND</option>
                                              <option value="default">SILKY</option>
                                            </select>
                                          </td>
                                        	<td><input class="form-control" type="number" name="" value=""></td>
                                        	<td><button id="insert-more" class="insert-more btn btn-primary" type="button" name="button">ADD</button></td>
                                        </tr>
                                    </tbody>
                                </table>

Upvotes: 0

yasarui
yasarui

Reputation: 6563

Hide the button like below.change the id of the button to a class and bind the button like below.it works perfectly

$('body').on('click','.insert-more',function(){
    $("#mytable").each(function () {
        var tds = '<tr>';
        jQuery.each($('tr:last td', this), function () {
            tds += '<td>' + $(this).html() + '</td>';
        });
        tds += '</tr>';
        if ($('tbody', this).length > 0) {
            $('tbody', this).append(tds);
        } else {
            $(this).append(tds);
        }
    });
    $(this).hide();
})

here is the fiddle

enter image description here

Upvotes: 3

Amit Joshi
Amit Joshi

Reputation: 474

you need to put add button outside the #mytable (table) so you can get your desire output only change html part as i pasted here.

<table id="mytable" class="table table-hover table-striped">
                                    <thead>
                                        <th>Check</th>
                                        <th>Nama Klien</th>
                                        <th>Nama File</th>
                                        <th>Ukuran</th>
                                        <th>Bahan</th>
                                        <th>Jumlah</th>
                                        <th></th>
                                    </thead>
                                    <tbody>
                                        <tr>
                                            <td>
                                            <label class="checkbox">
                                                <input type="checkbox" value="" data-toggle="checkbox">
                                            </label>
                                          </td>
                                            <td>
                                            <select class="form-control">
                                              <option value="default">KLIEN :</option>
                                              <option value="default">ELV</option>
                                              <option value="default">ZYTA</option>
                                              <option value="default">LOUSALUNA</option>
                                              <option value="default">MYLADY</option>
                                            </select>
                                          </td>
                                          <td>
                                            <select class="form-control">
                                              <option value="default">FILES :</option>
                                              <option value="default">TWOTONE 1</option>
                                              <option value="default">TWOTONE 1</option>
                                              <option value="default">TWOTONE 1</option>
                                              <option value="default">TWOTONE 1</option>
                                              <option value="default">TWOTONE 1</option>
                                            </select>
                                          </td>
                                          <td>
                                            <select class="form-control">
                                              <option value="default">UKURAN :</option>
                                              <option value="default">110</option>
                                              <option value="default">115</option>
                                              <option value="default">120</option>
                                              <option value="default">130</option>
                                              <option value="default">150</option>
                                            </select>
                                          </td>
                                          <td>
                                            <select class="form-control">
                                              <option value="default">BAHAN :</option>
                                              <option value="default">MAXMARA</option>
                                              <option value="default">VOAL INDO</option>
                                              <option value="default">VOAL INDIA</option>
                                              <option value="default">DIAMOND</option>
                                              <option value="default">SILKY</option>
                                            </select>
                                          </td>
                                            <td><input class="form-control" type="number" name="" value=""></td>

                                        </tr>
                                    </tbody>
                                </table>
                                </table>
                                <tr>
                                <td><button id="insert-more" class="btn btn-primary" type="button" name="button">ADD</button></td></tr></table>

let me know is it ok for you ?

Upvotes: 0

Related Questions