javascript - 选择下拉过滤器,在数据表中显示多条相同的记录
问题描述
我正在使用带有选择下拉过滤器的数据表。它运行良好。我的问题在选择下拉列表中,我得到的相同记录不止一个,因为我在表中有这样的记录。所以我必须只显示一个选项。
例如,我有一个表和记录就像
id | name | game | ground
1 | lkjh | Cricket | ground1
2 | poiu | Baseball | ground2
3 | qwee | Cricket | ground3
4 | adsd | badminton | ground4
5 | poiu | badminton | ground5
所以我得到了下拉菜单。(这只是一个例子)
<select>
<option>Cricket</option>
<option>Baseball</option>
<option>Cricket</option>
<option>badminton</option>
<option>badminton</option>
</select>
我需要这样
<select>
<option>Cricket</option>
<option>Baseball</option>
<option>badminton</option>
</select>
你能帮我解决这个问题吗?我正在使用以下脚本,参考链接是https://datatables.net/examples/api/multi_filter_select.html
$(document).ready(function() {
$('#paymentList').DataTable({
initComplete: function() {
this.api().columns("2").every(function() {
var column = this;
var select = $('<select name="select_filter_action"><option value="">All</option></select>')
.appendTo($("#select_filter_action").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) {
//console.log(d);
select.append('<option value="' + d + '">' + d + '</option>')
});
});
}
});
});
解决方案
在为过滤器创建选择选项时,您只需选择唯一值。您可以检查以下代码:
var selectOptionsCollections = [];
column.data().unique().sort().each( function ( d, j ) {
if (jQuery.inArray(d, selectOptionsCollections) === -1) {
select.append( '<option value="'+d+'">'+d+'</option>' )
selectOptionsCollections.push(d);
}
} );
此代码用于您在上述链接上共享的数据表更改。希望它可以帮助你。
推荐阅读
- python - 如何在我们不知道有多少嵌套对象具有相同键的情况下遍历 json 对象的特定键?
- vba - 访问 2016 备用行颜色
- angular - 选择复杂形式数组角度中的至少一个复选框
- python - 通过输入将数组 1D 重塑为 2D numpy - Numpy
- python - WooCommerce API - 从订单中更改电子邮件
- ios - iOS 小部件扩展:使用小部件扩展方案运行时“无法显示小部件”
- javascript - javascript中旧代码的隐形障碍
- jquery - “富文本编辑器”自动出现在 ckeditor 的顶部
- java - ElasticSearch 无痛确定该字段是源文档中的数组
- python - 如何将变量添加到 sql 查询?