jQuery数据表:多复选框筛选

jQuery数据表:多复选框筛选,jquery,checkbox,filter,datatables,Jquery,Checkbox,Filter,Datatables,我使用jQuery datatables只是为了显示一些数据,但我想用多个复选框过滤这些数据。 我的表格包含以下标题:主机、类型、记录、描述、免费 这些是我在数据表外的复选框: 类型:MXACNAME 免费:01 因此,在开始时,我想显示所有的数据。如果现在有人选中复选框MX,它应该只显示类型为MX的数据。如果有人检查MX、CNAME和0,它应该只显示带有这些过滤器的数据。你知道我的意思吗? 我有一个插件可以做到这一点,但复选框在列下面,我的复选框在数据表之外 有什么想法吗?您应该使用此功能:

我使用jQuery datatables只是为了显示一些数据,但我想用多个复选框过滤这些数据。
我的表格包含以下标题:
主机、类型、记录、描述、免费

这些是我在数据表外的复选框:
类型
MX
A
CNAME

免费
0
1
因此,在开始时,我想显示所有的数据。如果现在有人选中复选框
MX
,它应该只显示类型为
MX
的数据。如果有人检查
MX
CNAME
0
,它应该只显示带有这些过滤器的数据。你知道我的意思吗?
我有一个插件可以做到这一点,但复选框在列下面,我的复选框在数据表之外


有什么想法吗?

您应该使用此功能:

function filterme() {
  //build a regex filter string with an or(|) condition
  var types = $('input:checkbox[name="type"]:checked').map(function() {
    return '^' + this.value + '\$';
  }).get().join('|');
  //filter in column 0, with an regex, no smart filtering, no inputbox,not case sensitive
  otable.fnFilter(types, 0, true, false, false, false);

  //build a filter string with an or(|) condition
  var frees = $('input:checkbox[name="free"]:checked').map(function() {
    return this.value;
  }).get().join('|');
  //now filter in column 2, with no regex, no smart filtering, no inputbox,not case sensitive
  otable.fnFilter(frees, 2, false, false, false, false);
}
看看评论,看看它有什么作用

从html中调用它,如下所示:

  <input onchange="filterme()" type="checkbox" name="free" value="0">0
  <input onchange="filterme()" type="checkbox" name="free" value="1">1
0
1.
Plunker是HTML和JS代码片段的测试平台,它极大地帮助其他人了解您的问题所在,并对如何修复问题给出快速响应。它的工作原理很像html/js/css编辑器,可以在每个按键上呈现您的示例,非常棒

在Plunker的左侧,您可以找到我在过程中使用的文件(index.html和script.js)

虽然这是可行的,并且应该给你一个如何继续的想法,但是你应该考虑使用免费过滤器的单选按钮,因为这样会更有意义


因为这是一个非常复杂的问题,如果有什么需要解释的话,请告诉我。

在我开始之前:您是否使用服务器端处理?如果没有,你能准备一个plunker吗?@maingay没有,我没有使用服务器端处理。什么是plunker?我对免费的
有问题。我在记录下得到了包含
0
1
的数据,所以他也显示了这些数据。你是什么意思?0和1由两个输入覆盖。正如我所说,在这里使用两个具有Free/Not Free的收音机或一个返回Free True/Free Not True的复选框更有意义。这就是你想要的吗?在当前设置中,复选标记可以在值0和1上,这当然会返回所有记录。看看这个使用单选按钮的插件,它更符合逻辑:嗯,现在我明白了。然后,您应该只过滤相应列中的空闲。在我的示例中,使用2作为过滤器列,它是代码中的记录列。限制到此行的第4行(起始计数为零):otable.fnFilter(frees,4,false,false,false,false);现在看看最后一个应该与您的数据结构相匹配的插件:您开始看到插件有多有用了吗?