Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在jquery datatables插件的单列上添加下拉过滤器?_Jquery_Html_Datatables - Fatal编程技术网

如何在jquery datatables插件的单列上添加下拉过滤器?

如何在jquery datatables插件的单列上添加下拉过滤器?,jquery,html,datatables,Jquery,Html,Datatables,我想在dataTables上添加一个下拉过滤器,仅在单个列上添加。 我添加了以下代码,但它在所有列上添加了下拉列表: $('#dataTables-example').DataTable({ responsive: true, "pageLength": 100, "lengthMenu": [100, 250, 500, "All"], initComplete: function () { this.api().columns().every(

我想在
dataTables
上添加一个下拉过滤器,仅在单个列上添加。 我添加了以下代码,但它在所有列上添加了下拉列表:

$('#dataTables-example').DataTable({
    responsive: true,
    "pageLength": 100,
    "lengthMenu": [100, 250, 500, "All"],
    initComplete: function () {
        this.api().columns().every( function () {
        var column = this;
        $('#dataTables-example .head .head_hide').html('');

        var select = $('<select id="formfilter" class="filterdropdown"><option value="">'+$(column.header()).text()+'</option></select>')
            .appendTo( $(column.header()).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>' )
        });
    }); 
});
$('#数据表示例')。数据表({
回答:是的,
“页面长度”:100,
“长度菜单”:[100250500,“全部”],
initComplete:函数(){
this.api().columns().every(函数(){
var列=此;
$('#dataTables example.head.head_hide').html('';
var select=$(''+$(column.header()).text()+'')
.appendTo($(column.header()).empty())
.on('change',function(){
var val=$.fn.dataTable.util.escapeRegex(
$(this.val()
);
柱
.search(val?“^”+val+“$”:“”,true,false)
.draw();
});
column.data().unique().sort().each(函数(d,j){
选择。追加(“”+d+“”)
});
}); 
});

解决方案

改变

this.api().columns().every( function () {

其中
1
是基于零的列索引

注释

  • 要向某些列添加筛选器,请改用
    列([1,3])
    格式
  • 您需要禁用该列的排序,因为每次单击筛选器时,您的列都将被排序。否则,请使用多行标题或将筛选器添加到页脚

请花时间更仔细地格式化您的代码-最终结果更容易理解!一致地缩进,并且从不混合制表符和空格。这应该可以工作。但是如果url更改并且重新加载了表,我们可以做什么。过滤器仍然显示为旧数据。
$('#示例').DataTable().ajax.url(newurl.load());
@TheAlphaGhost,我假设在这种情况下,您需要在生成过滤器的
initComplete
中重新运行代码。
this.api().columns(1).every( function () {