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

PHP实现:同一页面中如何将上一行textbox值传递至新增行

当然可以实现这个需求!这是动态表单里非常实用的用户体验优化,能帮用户省去重复输入的麻烦。我给你拆解不同技术栈的实现思路,核心逻辑都是相通的:

实现思路与代码示例

原生JavaScript方案

假设你的表单行基础结构是这样的:

<div class="form-row-container">
  <!-- 初始行 -->
  <div class="form-row">
    <input type="text" class="teacher-name" value="AAAA">
    <input type="text" class="subject" placeholder="教授科目">
    <input type="text" class="class-room" placeholder="教授班级">
  </div>
</div>
<button id="add-row-btn">+</button>

接下来写核心逻辑:点击「+」按钮时,复制最后一行的教师名称到新行,同时清空科目和班级输入框(还可以把新行的教师名称设置为只读,避免误改):

document.getElementById('add-row-btn').addEventListener('click', function() {
  const rowContainer = document.querySelector('.form-row-container');
  const lastRow = rowContainer.querySelector('.form-row:last-child');
  
  // 克隆最后一行的DOM结构
  const newRow = lastRow.cloneNode(true);
  
  // 获取最后一行的教师名称值
  const targetTeacherName = lastRow.querySelector('.teacher-name').value;
  
  // 设置新行的教师名称,并且设为只读(可选,根据需求调整)
  const newRowTeacherInput = newRow.querySelector('.teacher-name');
  newRowTeacherInput.value = targetTeacherName;
  newRowTeacherInput.readOnly = true;
  
  // 清空新行的科目和班级输入框
  newRow.querySelector('.subject').value = '';
  newRow.querySelector('.class-room').value = '';
  
  // 把新行添加到容器中
  rowContainer.appendChild(newRow);
});

Vue框架方案(数据驱动更简洁)

如果用Vue开发,逻辑会更直观,完全通过数据来控制:

<template>
  <div>
    <div v-for="(row, index) in teacherRows" :key="index" class="form-row">
      <!-- 只有第一行允许修改教师名称,后续行只读 -->
      <input v-model="row.teacherName" :readonly="index > 0">
      <input v-model="row.subject" placeholder="教授科目">
      <input v-model="row.classRoom" placeholder="教授班级">
    </div>
    <button @click="addNewRow">+</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      teacherRows: [
        { teacherName: 'AAAA', subject: '', classRoom: '' }
      ]
    }
  },
  methods: {
    addNewRow() {
      const lastRow = this.teacherRows[this.teacherRows.length - 1];
      this.teacherRows.push({
        teacherName: lastRow.teacherName,
        subject: '',
        classRoom: ''
      });
    }
  }
}
</script>

额外优化建议

  • 只读权限控制:除了初始行,所有新增行的教师名称输入框设置为只读,彻底避免重复输入;
  • 同步初始行修改:如果用户修改了第一行的教师名称,可以自动同步所有已新增行的对应值,逻辑更严谨;
  • 添加删除按钮:给每一行配上删除按钮,方便用户移除不需要的条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:58:38