0
我试图使用提供的演示代码实现选择过滤器,但它不会过滤表。在js数据表中添加一个多选择
JS代码
imsi_table = $('#imsi_table').DataTable({
"lengthMenu": [[7,-1],['Per Site','All']],
"iDisplayLength": 7,
"ordering": false,
"bLengthChange": true,
"bInfo": false,
"bFilter": false,
fixedHeader: {
header: true,
footer: true
},
"footerCallback": function (row, data, start, end, display) {
var api = this.api(), data;
// Remove the formatting to get integer data for summation
var intVal = function (i) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '')*1 :
typeof i === 'number' ?
i : 0;
};
// Total over this page
postPayTotal = api
.column(2, { page: 'current'})
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
// Update footer
$(api.column(2).footer()).html(
postPayTotal
);
// Total over this page
prePayTotal = api
.column(3, { page: 'current'})
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
// Update footer
$(api.column(3).footer()).html(
prePayTotal
);
// Total over this page
uknownTotal = api
.column(4, { page: 'current'})
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
// Update footer
$(api.column(4).footer()).html(
uknownTotal
);
},
initComplete: function() {
this.api().columns('.multi-select-filter').every(function() {
var column = this;
console.log(column);
var select = $('<select><option value=""></option></select>')
.appendTo($(column.footer()).empty())
.on('change', function() {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search(val ? '^'+val+'$' : '', true, false)
.draw();
console.log(val);
});
column.data().unique().sort().each(function (d, j) {
select.append('<option value="'+d+'">'+d+'</option>')
});
});
}
}); // datatble end
HTML代码
<div id="imsi_table_wrapper" class="dataTables_wrapper form-inline dt-bootstrap">
<div class="row">
<div class="col-sm-6">
<div class="dataTables_length" id="imsi_table_length">
<label>Show
<select name="imsi_table_length" aria-controls="imsi_table" class="form-control input-sm">
<option value="7">Per Site</option>
<option value="-1">All</option>
</select>
entries</label></div>
</div>
<div class="col-sm-6"></div>
</div>
<div class="row">
<div class="col-sm-12">
<table id="imsi_table" class="table table-bordered table-inverse table-hover table-striped table-sm dataTable" role="grid">
<thead class="">
<tr role="row">
<th class="sorting_disabled" rowspan="1" colspan="1" style="width: 374px;">Site</th>
<th class="multi-select-filter sorting_disabled" rowspan="1" colspan="1" style="width: 188px;">Service</th>
<th class="sorting_disabled" rowspan="1" colspan="1" style="width: 182px;">PostPay</th>
<th class="sorting_disabled" rowspan="1" colspan="1" style="width: 161px;">PrePay</th>
<th class="sorting_disabled" rowspan="1" colspan="1" style="width: 179px;">Uknown</th>
</tr>
</thead>
<tbody>
<tr role="row" class="odd">
<td>1</td>
<td>2G Voice</td>
<td>1839</td>
<td>575</td>
<td>583</td>
</tr>
<tr role="row" class="even">
<td>1</td>
<td>3G Voice</td>
<td>12311</td>
<td>563</td>
<td>943</td>
</tr>
<tr role="row" class="odd">
<td>1</td>
<td>2G SMS</td>
<td>618</td>
<td>321</td>
<td>239</td>
</tr>
<tr role="row" class="even">
<td>1</td>
<td>3G SMS</td>
<td>2849</td>
<td>400</td>
<td>358</td>
</tr>
<tr role="row" class="odd">
<td>1</td>
<td>2G Data</td>
<td>1765</td>
<td>96</td>
<td>3177</td>
</tr>
<tr role="row" class="even">
<td>1</td>
<td>3G Data</td>
<td>14345</td>
<td>892</td>
<td>2260</td>
</tr>
<tr role="row" class="odd">
<td>1</td>
<td>4G</td>
<td>1390</td>
<td>52</td>
<td>151</td>
</tr>
</tbody>
<tfoot>
<tr>
<th rowspan="1" colspan="1">Total Unique IMSIs</th>
<th rowspan="1" colspan="1">
<select>
<option value=""></option>
<option value="2G Data">2G Data</option>
<option value="2G SMS">2G SMS</option>
<option value="2G Voice">2G Voice</option>
<option value="3G Data">3G Data</option>
<option value="3G SMS">3G SMS</option>
<option value="3G Voice">3G Voice</option>
<option value="4G">4G</option>
</select></th>
<th rowspan="1" colspan="1">35117</th>
<th rowspan="1" colspan="1">2899</th>
<th rowspan="1" colspan="1">7711</th>
</tr>
</tfoot>
</table>
</div>
</div>
<div class="row">
<div class="col-sm-5"></div>
<div class="col-sm-7">
<div class="dataTables_paginate paging_simple_numbers" id="imsi_table_paginate">
<ul class="pagination">
<li class="paginate_button previous disabled" id="imsi_table_previous"><a href="#" aria-controls="imsi_table" data-dt-idx="0" tabindex="0">Previous</a></li>
<li class="paginate_button active"><a href="#" aria-controls="imsi_table" data-dt-idx="1" tabindex="0">1</a></li>
<li class="paginate_button next disabled" id="imsi_table_next"><a href="#" aria-controls="imsi_table" data-dt-idx="2" tabindex="0">Next</a></li>
</ul>
</div>
</div>
</div>