2016-04-03 60 views
1

我想在數據表中實現動態addrow,但不知何故我不能通過在新添加的行中添加html標記並選擇數據不顯示,從而無法使其工作。當我在小提琴試了一下在數據表中添加html標記添加行

這是我的JS,

$('#productselect').each(function(index, value){ 
     var initSelectpicker = $(this).selectpicker(); 
     $.getJSON('../../../html/data/productlist.php', function(data){ 

      initSelectpicker.html(''); 
      $.each(data, function(key, val){ 
       initSelectpicker.append('<option value="' + val["prod_desc"] + '">'+ val["prod_desc"] + '</option>'); 
      }); 
      initSelectpicker.selectpicker('refresh'); 
     }); 
    }); //end flightselect 
$(document).ready(function() { 
    var t = $('#example').DataTable(); 
    var counter = 1; 

    $('#addRow').on('click', function() { 
     t.row.add([ 
      counter +'.1', 
      "<select class='form-control' id='productselect' data-live-search='true'>", 
      counter +'.3', 
      counter +'.4', 
      counter +'.5' 
     ]).draw(false); 

     counter++; 
    }); 

    // Automatically add a first row of data 
    $('#addRow').click(); 
}); 
+0

請詳細說明您想實現的目標。您可以向我們展示[小提琴](https://jsfiddle.net/)。和任何錯誤? –

回答

2

腳本的第一部分只會在第一次加載頁面時被調用。這就是爲什麼選擇字段填入了productlist.php的選項。

因此,當您嘗試添加更多行時,新的選擇字段將沒有選項。當您嘗試添加新行時,您可以執行的操作是撥打productlist.php

$(document).ready(function() { 

    var t = $('#example').DataTable(); 
    var counter = 1; 

    $(document).on('click', '#addRow', function() { 

     /*** GET ALL OPTIONS ***/ 
     $.getJSON('../../../html/data/productlist.php', function(data){ 
      var newoptions = ''; 
      $.each(data, function(key, val){ 
       newoptions .= '<option value="' + val["prod_desc"] + '">'+ val["prod_desc"] + '</option>'; 
      }); 
     }); 

     t.row.add([ 
      counter +'.1', 
      '<select class="form-control" id="productselect" data-live-search="true">'+newoptions+'</select>', 
      counter +'.3', 
      counter +'.4', 
      counter +'.5' 
     ]).draw(false); 

     counter++; 
    }); 

    // Automatically add a first row of data 
    $('#addRow').click(); 
}); 
2

行添加工作正常。

您的問題似乎是「爲什麼不在新行中的<select>有選項」。

添加該行後,您的代碼似乎用於添加內容。在頁面呈現時,您將向頁面上的所有#productselect添加選項,但該控件尚不存在。只有在添加了選擇本身之後,您才需要調用您的代碼來添加選項。

另外,你將有問題的,因爲你的選擇控制有id屬性,如果用戶輸入多行,那麼你就必須含有相同id一個以上的元素,這是不允許的文件-沒有。