自定义复选框类别选择器

问题描述 投票:1回答:1

我想按不同类别过滤我的数据数组。它正在工作,但是应该选择多个类别的行。如果选中了多个复选框。如何实现此代码?

这是我的代码:

check_18650 = function() {
        if (document.getElementById("checkbox_18650").checked == true) {
  view.setRows(data.getFilteredRows([{column:2, value: '18650'}]));
        dashboard.draw(view)}
  else {
  view.setRows(data.getFilteredRows([{column:2}]));
  dashboard.draw(view);
  }
  }

check_pouch = function() {
  if (document.getElementById("checkbox_pouch").checked == true) {
  view.setRows(data.getFilteredRows([{column:2, value: 'pouch'}]));
  dashboard.draw(view);
  }
  else if (document.getElementById("checkbox_18650").checked == true && document.getElementById("checkbox_pouch").checked == true) {
  view.setRows(data.getFilteredRows([{column:2, value: 'pouch'}]));
  view.setRows(data.getFilteredRows([{column:2, value: '18650'}]));
  dashboard.draw(view);
  }
  else {
  view.setRows(data.getFilteredRows([{column:2}]));
  dashboard.draw(view);
  }
  }
google-visualization
1个回答
0
投票

当过滤多个值时,您将需要将它们合并到一个过滤器设置中。数据视图将不允许您在同一列上使用多个过滤器。

在这种情况下,您可以使用test回调函数,而不是value键。

这里,一个数组用于收集值,和test回调以过滤列...

check_pouch = function() {
  var values = [];
  if (document.getElementById("checkbox_pouch").checked == true) {
    values.push('pouch');
  }
  if (document.getElementById("checkbox_18650").checked == true) {
    values.push('18650');
  }
  if (values.length > 0) {
    view.setRows(data.getFilteredRows([{
      column:2,
      test: function (value) {
        return (values.indexOf(value) > -1);
      }
    }]));
  }
  dashboard.draw(view);
}
© www.soinside.com 2019 - 2024. All rights reserved.