简体   繁体   中英

Dynamically Add Remove Rows on Click Not Working Fully after Adding Select Drop-Down Options

This was working fine before without the <select> and <option> drop-downs... but trying to add a drop-down menu to this, it is functioning improperly (see the fiddle or more details below). Not seeing any errors popping up in console.

JSFiddle (Working): https://jsfiddle.net/zxqrpLvo/

JSFiddle (Not Working*): https://jsfiddle.net/a2a4584z/1/

Working (without Select Drop-Down):

HTML

<div class="row">
   <div class="col-md-3">
   </div>
   <div class="col-md-6" id="inputform">
      <form id="inventorytoadd">
         <table class="table table-striped table-responsive table-hover" id="tab_logic">
            <thead>
               <tr >
                  <th class="text-center" width="10%">
                     #
                  </th>
                  <th class="text-center" width="68%">
                     SKU
                  </th>
                  <th class="text-center" width="22%">
                     Quantity
                  </th>
               </tr>
            </thead>
            <tbody>
               <tr id='addi0'>
                  <td class="text-center numcell" width="10%">
                     1
                  </td>
                  <td width="68%">
                     <input type="text" name='sku[]' id="sku0"  placeholder='SKU' class="form-control"/>
                  </td>
                  <td width="22%">
                     <input type="text" name='qty[]' id="qty0" placeholder='Quantity' class="form-control"/>
                  </td>
               </tr>
               <tr id='addi1'></tr>
            </tbody>
         </table>
      </form>
   </div>
   <div class="col-md-3">
   </div>
</div>
<div class="row">
   <div class="col-md-3">
   </div>
   <div class="col-md-6 add-delete-rows" id="inventory-add">
      <button id="add_row" class="btn btn-primary pull-left">Add Row</button><button id='delete_row' class="pull-right btn btn-danger">Delete Row</button>
   </div>
   <div class="col-md-3">
   </div>
</div>

Along with accompanying jquery code

jQuery/Javascript

   $(document).ready(function() {
       var i = 1;
       $("#add_row").click(function() {
           $('#addi' + i).html("<td class='text-center numcell'>" + (i + 1) + "</td><td><input name='sku[]' type='text' placeholder='SKU' class='form-control input-md'  /> </td><td><input  name='qty[]' type='text' placeholder='Quantity'  class='form-control input-md'></td>");

           $('#tab_logic').append('<tr id="addi' + (i + 1) + '"></tr>');
           i++;
       });
       $("#delete_row").click(function() {
           if (i > 1) {
               $("#addi" + (i - 1)).html('');
               i--;
           }
       });

   });

Not Working with Select Drop-Down

HTML

<div class="row">
   <div class="col-md-1">
   </div>
   <div class="col-md-10" id="inputform">
      <form id="inventorytoadd">
         <table class="table table-striped table-responsive table-hover" id="tab_logic">
            <thead>
               <tr >
                  <th class="text-center">
                     #
                  </th>
                  <th class="text-center">
                     SKU
                  </th>
                  <th class="text-center">
                     Category
                  </th>
                  <th class="text-center">
                     Quantity
                  </th>
               </tr>
            </thead>
            <tbody>
               <tr id='addi0'>
                  <td class="text-center numcell">
                     1
                  </td>
                  <td>
                     <input type="text" name='sku[]' id="sku0"  placeholder='SKU' class="form-control"/>
                  </td>
                  <td>
                     <div class="select">
                        <select name="category[]">
                           <option title="Gaskets" value="Gaskets">Gaskets</option>
                           <option title="Oil Filters" value="Oil Filters">Oil Filters</option>
                           <option title="Air Filters" value="Air Filters">Air Filters</option>
                        </select>
                     </div>
                  </td>
                  <td>
                     <input type="text" name='qty[]' id="qty0" placeholder='Quantity' class="form-control"/>
                  </td>
               </tr>
               <tr id='addi1'></tr>
            </tbody>
         </table>
      </form>
   </div>
   <div class="col-md-1">
   </div>
</div>
<div class="row">
   <div class="col-md-3">
   </div>
   <div class="col-md-6 add-delete-rows" id="inventory-add">
      <button id="add_row" class="btn btn-primary">Add Row</button><button id='delete_row' class="btn btn-danger">Delete Row</button>
   </div>
   <div class="col-md-3">
   </div>
</div>

jQuery/Javascript

$(document).ready(function() {
    var i = 1;
    $('#add_row').click(function() {
        $('#addi' + i).html('<td class="text-center numcell">' + (i + 1) + '</td><td><input name="sku[]" type="text" placeholder="SKU" class="form-control input-md" /></td><td><div class="select"><select name="category[]"><option title="Gaskets" value="Gaskets">Gaskets</option><option title="Oil Filters" value="Oil Filters">Oil Filters</option><option title="Air Filters" value="Air Filters">Air Filters</option></select></div></td><td><input name="qty[]" type="text" placeholder="Quantity" class="form-control input-md"></td>');

        $('tab_logic').append('<tr id="addi' + (i + 1) + '"></tr>');
        i++;
    });

    $('#delete_row').click(function() {
        if (i > 1) {
            $('#addi' + (i - 1)).html("");
            i--;
        }
    });
});

As you can see by the fiddle, it is only allowing me to add a row once.. and for some reason it takes two clicks to delete a row. It appears to be identical code functionality from what I can see, what is the issue here?

you miss "#" on your selector: $('#tab_logic')

$(document).ready(function() {
var i = 1;
$('#add_row').click(function() {
    $('#addi' + i).html('<td class="text-center numcell">' + (i + 1) + '</td><td><input name="sku[]" type="text" placeholder="SKU" class="form-control input-md" /></td><td><div class="select"><select name="category[]"><option title="Gaskets" value="Gaskets">Gaskets</option><option title="Oil Filters" value="Oil Filters">Oil Filters</option><option title="Air Filters" value="Air Filters">Air Filters</option></select></div></td><td><input name="qty[]" type="text" placeholder="Quantity" class="form-control input-md"></td>');

    $('#tab_logic').append('<tr id="addi' + (i + 1) + '"></tr>');
    i++;

});

$('#delete_row').click(function() {
    if (i > 1) {
        $('#addi' + (i - 1)).html("");
        i--;
    }
});

});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM