
本文介绍如何通过原生 javascript 实现类似“下拉中嵌套下拉”的交互效果——即当用户在主下拉框中选择特定选项(如 saab)时,动态显示一个关联的二级下拉框,其他情况则隐藏;不依赖第三方库,语义清晰、兼容性好、易于维护。
本文介绍如何通过原生 javascript 实现类似“下拉中嵌套下拉”的交互效果——即当用户在主下拉框中选择特定选项(如 saab)时,动态显示一个关联的二级下拉框,其他情况则隐藏;不依赖第三方库,语义清晰、兼容性好、易于维护。
在标准 html 中,
推荐采用「双 select 分离 + 条件显隐」方案,结构清晰、语义正确、无障碍友好,且完全使用原生 JavaScript 即可完成,无需 jquery 或复杂框架。
✅ 推荐实现方式(原生 js)
以下是一个完整、可直接运行的示例:
<!-- 主下拉框 --> <select name="cars" id="cars"> <option value="">— 请选择品牌 —</option> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="opel">Opel</option> <option value="audi">Audi</option> </select> <!-- 二级下拉框(默认隐藏) --> <select name="car-model" id="car-model" class="hide"> <option value="">— 请选择车型 —</option> <option value="x">Model X</option> <option value="y">Model Y</option> <option value="z">Model Z</option> </select> <style> .hide { display: none; } </style> <script> const mainSelect = document.getElementById('cars'); const subSelect = document.getElementById('car-model'); mainSelect.addEventListener('change', function() { // 当选择 "saab" 时显示二级下拉框,否则隐藏 if (this.value === 'saab') { subSelect.classList.remove('hide'); // 可选:聚焦到二级框,提升可用性 subSelect.focus(); } else { subSelect.classList.add('hide'); // 重置二级框值,避免提交脏数据 subSelect.value = ''; } }); </script>
? 关键设计说明
- 语义与表单完整性:两个
- 无障碍支持:每个