You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataTables基于前两级下拉选择联动填充第三级下拉菜单问题

修复思路

原来的rebuildIDSelect仅提取当前搜索结果下ID列的去重值,只要ID出现在任意一个选中HR的行中就会被展示,没有校验ID是否关联了所有已选的HR值,所以导致不符合要求的ID也出现在选项里。

修改后的rebuildIDSelect代码

function rebuildIDSelect() {
  var select = $('#id_select select').empty().append('<option value=""></option>');
  // 获取所有已选的HR值
  var selectedHrs = $('#hr_s').val() || [];
  var column = table.column(1, {search: 'applied'});

  if (selectedHrs.length === 0) {
    // 未选择HR时沿用原有逻辑,展示所有符合项目筛选的ID
    column.data().unique().sort().each(function(val) {
      select.append('<option value="' + val + '">' + val + '</option>');
    });
    return;
  }

  // 统计每个ID关联的HR去重集合
  var idHrMap = {};
  table.rows({search: 'applied'}).every(function() {
    var rowData = this.data();
    var id = rowData.ID;
    var hr = rowData.HR;
    if (!idHrMap[id]) idHrMap[id] = new Set();
    idHrMap[id].add(hr);
  });

  // 筛选出关联HR覆盖所有已选HR的ID
  var validIds = Object.keys(idHrMap).filter(function(id) {
    return selectedHrs.every(function(hr) {
      return idHrMap[id].has(hr);
    });
  }).sort();

  // 生成下拉选项
  validIds.forEach(function(val) {
    select.append('<option value="' + val + '">' + val + '</option>');
  });
}

额外调整项

需要同时删除rebuildPositionSelect和rebuildIDSelect函数中原有的column.search('').draw();代码,这行代码会清空已选中的筛选条件,导致联动逻辑失效。

内容的提问来源于stack exchange,提问作者dfahsjdahfsudaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:54:05