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

如何在切换复选框时添加并恢复默认元素(非隐藏/显示方式)

动态实现复选框切换的内容交互需求

我来帮你搞定这个需求!核心思路是通过动态修改DOM内容来实现,完全不用隐藏/显示的方式,直接替换对应区域的HTML内容。下面是完整的可运行代码,我已经帮你修正了原代码里的标签闭合问题,并且实现了所有需求:

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <label><input type="checkbox" id="toggleName"> 输入你的姓名</label>
    <div id="contentArea">
        <p>You don't have a name</p>
    </div>

    <script>
        $(function(){
            // 定义默认文本的HTML结构
            const defaultText = '<p>You don\'t have a name</p>';
            // 定义输入区域的完整HTML
            const inputContent = `
                <div class="added">
                    <p>
                        <label>What is your name? </label>
                        <input type="text" id="A">
                    </p>
                    <p>Your name is: <span class="Y"></span></p>
                </div>
            `;

            // 监听复选框的切换事件
            $('#toggleName').on('change', function(){
                if($(this).is(':checked')){
                    // 勾选状态:替换内容为输入区域
                    $('#contentArea').html(inputContent);
                    // 绑定输入框的实时更新事件,覆盖键盘输入和粘贴场景
                    $('#A').on('keyup input', function(){
                        $('.Y').text($(this).val());
                    });
                } else {
                    // 取消勾选:直接替换回默认文本
                    $('#contentArea').html(defaultText);
                }
            });
        });
    </script>
</body>
</html>

关键细节说明:

  • 用一个#contentArea容器统一承载动态变化的内容,初始状态就渲染默认文本
  • 复选框切换时,直接替换容器内的完整HTML:
    • 勾选时插入输入区域,同时给输入框绑定双事件保证实时同步输入内容
    • 取消勾选时直接把容器内容重置为默认文本,完全符合「不使用隐藏/显示」的要求
  • 修复了原代码里未闭合的标签问题,确保HTML结构合法

运行这段代码后,勾选复选框会出现输入框,输入姓名时下方会实时显示;取消勾选时,输入区域会被完全替换回默认文本,完美实现你的需求!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:50:25