2016-11-28 6 views
0

私はDataTableを使用してテーブルを作成しています。列の1つに 'i'要素と非表示入力が含まれています。私は、その隠し値でデータ行をフィルタリングしたいと思いますが、それを行うことはできません。私の知る限りでは、問題はsearch()メソッドにありますが、私は自分の価値を維持している 'input'のような子要素を検索しないと思います。 コードフラグメント:DataTableの特定の列のドロップダウンフィルター

var select = $('<select><option value=""></option><option value="true">Accepted</option><option value="false">Rejected</option></select>') 
        .appendTo($(column.footer()).empty()) 
           .on('change', function() { 
            var val = $(this).val(); 

            column.search(val, true, false) // problem is here 
             .draw(true); 
           }); 

答えて

1

ネヴァーマインド、私は自分自身でこれを達成するために管理してきました。私は "columnDefs"を定義し、フィルタリングして "レンダリング"したい列であるこの "ターゲット"の中に定義する必要がありました。 コード:

var table = $('#dataCheck').DataTable({ 
    "sDom": "ltp", 
    "columnDefs": [{ 
     "targets": [6], 
     "render": function (data, type, full, meta) { 
      if(type === 'filter'){ 
       return $('#dataCheck').DataTable().cell(meta.row, meta.col).nodes().to$().find('input').val(); 
      } else { 
       return data; 
      } 
     } 
    }], 
    initComplete: function() { 
     this.api().columns().every(function (i) { 
      var column = this; 
      if (i == 6) 
      { 

       var select = $('<select><option value="..."></option><option value="true">Accepted</option><option value="false">Rejected</option></select>') 
        .appendTo($(column.footer()).empty()) 
           .on('change', function() { 
            var val = $(this).val(); 

            column.search(val, true, false) 
             .draw(true); 
           }); 

       column.data().unique().sort().each(function (d, j) { 
        select.append('<option value="' + d + '">' + d + '</option>') 
       }); 
      } 

     }); 
    } 
}); 
関連する問題