如何使用 JavaScript 根据下拉框选择动态显示或隐藏表单字段

通过监听 `

在构

建动态表单时,常需根据用户对下拉菜单(

✅ 实现原理

核心思路是:

  • 为每个
  • 隐藏所有目标区块,再仅显示匹配该 data-id 的区块。

? 完整示例代码

HTML 结构(关键部分):

  




  

Heure midi

Heure soir

CSS(使用 Bootstrap 5 的 d-none 类,或自定义):

/* 可选:兼容旧版或自定义隐藏类 */
.form-block.d-none { display: none !important; }

JavaScript(推荐现代写法,避免内联事件):

document.addEventListener('DOMContentLoaded', () => {
  const select = document.getElementById('autoSizingSelect');
  const blocks = document.querySelectorAll('.form-block');

  select.addEventListener('change', function() {
    const targetId = this.selectedOptions[0]?.dataset.id;

    // 隐藏全部区块
    blocks.forEach(block => block.classList.add('d-none'));

    // 显示匹配的区块(若存在)
    if (targetId && document.querySelector(targetId)) {
      document.querySelector(targetId).classList.remove('d-none');
    }
  });

  // 初始化:默认显示第一个选项对应的区块(可选)
  if (select.value === 'midi') {
    document.getElementById('midi').classList.remove('d-none');
  }
});

⚠ 注意事项

  • 确保每个 data-id 值与目标区块的 id 完全一致(含 # 符号);
  • 使用 document.querySelectorAll('.form-block') 统一管理区块,便于扩展更多选项;
  • 添加 DOMContentLoaded 保证 DOM 加载完成后再绑定事件;
  • 若使用 Bootstrap 5+,优先使用内置工具类 d-none / d-block,语义清晰且响应式友好;
  • 建议为

通过以上方式,你就能轻松实现下拉选择驱动的表单字段动态切换——简洁、健壮、易于维护。