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

如何实现点击单选按钮在同位置切换不同下拉菜单并隐藏当前项

单选按钮联动下拉表单实现方案

核心实现效果:选中group单选按钮时显示对应分组下拉表单form1,选中single单选按钮时显示对应单节点下拉表单form2,两个下拉菜单完全重叠在同一位置,切换时不会造成布局偏移。

实现逻辑说明

  • 新增相对定位容器包裹两个表单,内部表单使用绝对定位实现同位置叠放
  • 新增隐藏工具类控制表单显隐
  • 监听单选按钮切换事件,动态给对应表单添加/移除隐藏类
  • 页面初始化时默认选中group选项,匹配初始显示form1的状态

完整可运行代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>单选联动表单</title>
    <style>
        div.box3-flex {
            display: flex;
            align-items: center;
            margin-top: 30px;
            gap: 10px;
        }

        h4.name {
            margin: 3px 0px;
        }

        /* 表单容器 相对定位作为叠放基准 */
        .form-wrap {
            position: relative;
            width: fit-content;
        }

        .form {
            position: absolute;
            top: 0;
            left: 0;
            margin: 0;
        }

        /* 隐藏类 */
        .hidden {
            display: none !important;
        }

        select.click-op {
            padding: 5px 160px 5px 5px;
        }

        .radio-group {
            margin-left: 220px; /* 留出下拉菜单宽度,避免被叠放的表单遮挡 */
            display: flex;
            gap: 15px;
            align-items: center;
        }
    </style>
</head>
<body>
    <div class="box3-flex">
        <h4 class="name">Name:</h4>
        <!-- 表单包裹容器 实现同位置叠放 -->
        <div class="form-wrap">
            <form id="form1" class="form">
                <select name="sendingfrom" class="click-op">
                    <option value="group-select">arm</option>
                    <option value="group-select">all</option>
                </select>
            </form>
        
            <!-- 绑定single单选按钮的表单 -->
            <form id="form2" class="form hidden">
                <select name="sendingfrom" class="click-op">
                    <option value="single-select">position</option>
                    <option value="single-select">velocity</option>
                </select>
            </form>
        </div>

        <div class="radio-group">
            <input type="radio" id="group" name="group-or-single" value="group" checked>
            <label for="group">Group</label>

            <input type="radio" id="single" name="group-or-single" value="single">
            <label for="single">Single</label>
        </div>
    </div>

    <script>
        // 获取DOM元素
        const groupRadio = document.getElementById('group');
        const singleRadio = document.getElementById('single');
        const form1 = document.getElementById('form1');
        const form2 = document.getElementById('form2');

        // 切换表单显隐逻辑
        function toggleForm() {
            form1.classList.toggle('hidden', !groupRadio.checked);
            form2.classList.toggle('hidden', !singleRadio.checked);
        }

        // 绑定单选切换事件
        groupRadio.addEventListener('change', toggleForm);
        singleRadio.addEventListener('change', toggleForm);

        // 初始化执行一次,保证初始状态匹配
        toggleForm();
    </script>
</body>
</html>

关键改动点说明

  • CSS层面通过position定位属性实现两个下拉菜单同位置叠放,切换时不会出现页面跳动
  • 显隐控制通过class类实现,比直接操作内联样式更易维护
  • 单选按钮区域预留了足够左边距,不会被绝对定位的下拉菜单遮挡
  • 初始化默认选中Group选项,和form1默认显示的状态保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 05:00:45