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

如何实现点击按钮后复制字段显示在原字段右侧?

解决复制字段与原字段并排对齐的问题

要实现点击按钮后复制的字段与原字段并排显示在右侧、样式完全一致,需要从布局结构、样式控制和克隆逻辑三个方面调整,具体修改如下:

1. 调整HTML结构

将原输入组和复制区域放到弹性布局的父容器中,搭建横向排列的基础结构:

<div class="input-groups-container">
  <div id="inputs" class="short input-group">
    <input id="input1" class="input" placeholder=" Add label..." type="text">
    <hr class="hr1">
    <input id="input2" class="placeholder" placeholder=" Add placeholder..." type="text">
    <button class="btn btn-delete" onclick="deleteGroup(this)">
      <i class="fas fa-trash-alt"></i>
    </button>
    <button onclick="duplicate()" class="button1">
      <img src="https://img.icons8.com/android/24/null/plus.png"/>
    </button>
  </div>
  <div id="duplicatedInputs"></div>
</div>

2. 添加CSS样式

通过弹性布局实现横向排列,同时保证每个输入组的样式统一:

/* 父容器:弹性布局,支持换行 */
.input-groups-container {
  display: flex;
  flex-wrap: wrap;
  gap: 2%;
  padding: 10px;
}

/* 每个输入组的基础样式,控制宽度实现并排 */
.input-group {
  width: 48%;
  box-sizing: border-box;
  padding: 10px;
  border: 1px solid #eee;
  border-radius: 4px;
}

/* 统一输入框样式 */
.input-group input {
  width: 100%;
  margin-bottom: 8px;
  padding: 6px;
  box-sizing: border-box;
}

.input-group .hr1 {
  margin: 8px 0;
  border: none;
  border-top: 1px solid #ddd;
}

/* 按钮样式统一 */
.input-group button {
  margin-right: 8px;
  padding: 6px 10px;
  cursor: pointer;
}

3. 修改JavaScript逻辑

改为克隆整个输入组容器,确保复制后的结构、样式与原组完全一致,同时处理唯一ID和删除功能:

var counter = 1;

function duplicate() {
  // 克隆完整的输入组,而非单个输入框
  var originalGroup = document.getElementById("inputs");
  var clonedGroup = originalGroup.cloneNode(true);
  
  // 给克隆组设置唯一ID
  clonedGroup.id = "input-group-" + counter;
  
  // 修改组内输入框的唯一ID,避免冲突
  var clonedInput1 = clonedGroup.querySelector(".input");
  var clonedInput2 = clonedGroup.querySelector(".placeholder");
  clonedInput1.id = "input1-" + counter;
  clonedInput2.id = "input2-" + counter;
  
  // 隐藏克隆组的新增按钮,避免嵌套新增
  var addBtn = clonedGroup.querySelector(".button1");
  addBtn.style.display = "none";
  
  // 将克隆组追加到复制区域
  document.getElementById("duplicatedInputs").appendChild(clonedGroup);
  
  counter++;
}

// 新增删除组的功能
function deleteGroup(btn) {
  var group = btn.closest(".input-group");
  // 禁止删除原始输入组(可根据需求调整)
  if (group.id !== "inputs") {
    group.remove();
  }
}

关键修改说明

  • Flex布局:通过input-groups-container的display: flex实现横向排列,flex-wrap: wrap保证超出宽度后自动换行
  • 克隆完整组:避免单独克隆输入框导致结构缺失,确保样式和交互逻辑与原组一致
  • 唯一ID处理:给克隆元素设置唯一ID,避免DOM元素ID冲突
  • 删除功能优化:新增删除按钮逻辑,同时限制原始组不能被删除(可按需调整)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:32:45