如何通过选择框向数据表添加行?

时间:2019-01-18 14:39:44

标签: jquery datatables row add draw

我通过从选择框中选择一个选项来向数据表添加一行:

 <select class="item-select">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="vw">VW</option>
  <option value="audi">Audi</option>
</select>

 $(document).on('change', '.item-select', function() {
    var optionValue = $(this).val();
    var optionText = $('.item-select option[value="'+optionValue+'"]').text();
    table.row.add({
      "id":     optionValue,
      "name":   optionText,
    }).draw();

  });

它运行良好,但我希望能够再次直接直接添加相同的选项。 例如,这意味着:先添加Volvo,然后再添加Saab,但是当我现在想添加另一个Saab时,它不起作用。我必须添加诸如VW之类的其他内容,然后才能添加Saab

1 个答案:

答案 0 :(得分:1)

添加一个空白值并重置不会触发change事件的选择。

$(document).on('change', '.item-select', function() {
    var optionValue = $(this).val();
    var optionText = $('.item-select option[value="'+optionValue+'"]').text();
    if (optionValue) {
      //  table.row.add({
      //    "id":     optionValue,
      //    "name":   optionText,
      //  }).draw();
      $('option', this).first().prop('selected', true)
      console.log(`${optionText} added`)
    }
  })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="item-select">
  <option>Select make...</option>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="vw">VW</option>
  <option value="audi">Audi</option>
</select>