Javascript 使用带有数据表的组合框进行筛选

Javascript 使用带有数据表的组合框进行筛选,javascript,datatables,Javascript,Datatables,我正在过滤搜索select输入的单个表列。它正在工作,但我希望能够选择多个产品 正常工作,如我所示: initComplete: function () { this.api().columns().every( function () { var column = this; var select = $('<select style="width: 350px;"><option val

我正在过滤搜索select输入的单个表列。它正在工作,但我希望能够选择多个产品

正常工作,如我所示:

initComplete: function () {
            this.api().columns().every( function () {
                var column = this;
                var select = $('<select style="width: 350px;"><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>' )
                } );
            } );
        }

你能帮忙吗

通常,可以使用
搜索多个值。在正则表达式中,
|
是逻辑的
。因此,请尝试使用
join(“|”)

演示

var table=$('#示例').DataTable({
initComplete:function(){
this.api().columns().every(函数()){
var列=此;
变量选择=$(“”)
.appendTo($(column.footer()).empty())
.on('change',function()){
柱
.search($(this).val().map($.fn.dataTable.util.escapeRegex).join('|'),true,false)
.draw();
});
column.data().unique().sort().each(函数(d,j){
选择。追加(“”+d+“”)
});
});
}
})

名称
位置
办公室
头号人物
开始日期
薪水
老虎尼克松
系统架构师
爱丁堡
155555
2011/04/25
$320,800
加勒特温特斯
会计
东京
63
2011/07/25
$170,750
阿什顿考克斯
初级技术作者
旧金山
1.
2009/01/12
$86,000
阿什顿考克斯
初级技术作者
旧金山
1.
2009/01/12
$86,000

在投入使用后,我注意到有一个问题,一些甚至存在的产品说他们找不到them@BrunoPinto该列数据是否包含任何特殊字符?如果是这样的话,那么请使用before
join()
尝试
$.fn.dataTable.util.escapeRegex
,您的意思是:
.search($(this.val()。$.fn.dataTable.util.escapeRegex.join(“|”),true,false)
。是的,它有特殊的功能characters@BrunoPinto我在前面的评论中提供了
map()
链接,请访问并阅读文档,您将知道我想说什么。提示-
$(this).val()返回一个array@BrunoPint
.search($(this).val().map($.fn.dataTable.util.escapeRegex).join(“|”)
这可能会有帮助。不确定
initComplete: function () {
            this.api().columns().every( function () {
                var column = this;
                var select = $('<select style="width: 350px;"  multiple><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>' )
                } );
            } );
        }