我有一个简单的数据表,它看起来像:数据表:结合两列创建一个选择搜索
<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:将两个值集合一对一选择。 –