添加选择下拉选项后,动态添加删除行单击不完全工作

时间:2018-04-05 23:02:45

标签: javascript jquery html select drop-down-menu

在没有<select><option>下拉菜单的情况下,此工作正常 但是试图为此添加一个下拉菜单,它运行不正常(请参阅下面的小提琴或更多细节)。没有看到控制台中出现任何错误。

JSFiddle(工作):https://jsfiddle.net/zxqrpLvo/

JSFiddle(不工作*):https://jsfiddle.net/a2a4584z/1/

  

工作(没有选择下拉列表):

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>

随附jquery代码

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--;
           }
       });

   });
  

不使用选择下拉列表

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--;
        }
    });
});

正如你可以通过小提琴看到的那样,它只允许我添加一行...并且出于某种原因需要两次点击才能删除一行。它看起来与我所看到的相同的代码功能,这里的问题是什么?

1 个答案:

答案 0 :(得分:0)

你错过了#34;#&#34;在您的选择器上:$(&#39;#tab_logic&#39;)

$(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--;
    }
});

});