我有一個簡單的數據表,它看起來像:數據表:結合兩列創建一個選擇搜索
<table>
<thead>
<tr>
<th>From</th>
<th>To</th>
</tr>
</thead>
<tfoot>
<tr>
<th>From</th>
<th>To</th>
</tr>
</tfoot>
<tbody>
<tr>
<td>Anchorage</td>
<td>Calgary</td>
</tr>
<tr>
<td>Vancouver</td>
<td>Calgary</td>
</tr>
<tr>
<td>Vancouver</td>
<td>Calgary</td>
</tr>
<tr>
<td>Vancouver</td>
<td>Toronto</td>
</tr>
<tr>
<td>Vancouver</td>
<td>Calgary</td>
</tr>
<!-- etc -->
</tbody>
</table>
我想創建一個選擇選項來過濾所有表的結果,但希望它以表徵來自兩列的數據。例如:
<select>
<option>Anchorage</option>
<option>Calgary</option>
<option>Vancouver</option>
<option>Toronto</option>
</select>
而此刻我得到
<select>
<option>Anchorage</option>
<option>Calgary</option>
</select>
我一直在使用columnDefs嘗試,但不知道如何得到它在兩個數據合併到一個選擇而不會影響顯示器兩列。
這是我使用
var table = $('#example').DataTable({
initComplete: function() {
this.api().columns().every(function() {
var column = this;
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();
});
column.data().unique().sort().each(function (d, j) {
select.append('<option value="'+d+'">'+d+'</option>');
});
});
}
});
table.on('draw', function() {
table.columns().indexes().each(function (idx) {
var select = $(table.column(idx).footer()).find('select');
if (select.val() === '') {
select
.empty()
.append('<option value=""/>');
table.column(idx, {search:'applied'}).data().unique().sort().each(function (d, j) {
select.append('<option value="'+d+'">'+d+'</option>');
});
}
});
});
是否要添加'option'包含'td's文本是uniq? – Mohammad
我可以做到這一點沒有數據表和正則表達式,我很長時間沒有看數據表,但如果我沒有記錯他們的文檔是非常好的。在這裏尋找搜索和/或過濾功能:https://datatables.net/reference/api/ – JokerDan
我只是想能夠從兩列創建一個選擇,而不是顯示兩個(這是它現在所做的)。 ie:將兩個值集合一對一選擇。 –