Vue2显示动态添加表单

<template>
  <div class="container">
    <el-form ref="form" :rules="rules" :inline="true" :model="form" label-width="80px">
      <!-- 固定项目 -->
      <el-form-item label="学生姓名" prop="name">
        <el-input v-model="form.name" palceholder="请输入姓名">
        </el-input>
      </el-form-item>
      <el-form-item label="联系电话" prop="phone">
        <el-input v-model="form.phone" palceholder="请输入电话">
        </el-input>
      </el-form-item>
      <!-- 动态增加项目 -->
      <el-row>
        <el-col :span="24">
          <el-form-item label="动态增加">
            <el-button type="primary" size="mini" @click="addItem()" icon="el-icon-plus"></el-button>
          </el-form-item>
        </el-col>
      </el-row>
      <div v-for="(item, index) in form.dynamic" :key="index" style="border-bottom: 1px dashed #909399; margin-bottom: 25px;">
        <el-row>
          <el-col :span="12">
            <el-form-item label="学生姓名" :prop="'dynamic.' + index + '.name'"
                          :rules="{required: true, message: '姓名不能为空', trigger: 'blur'}">
              <el-input v-model="item.name"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="学生性别" :prop="'dynamic.' + index + '.gender'">
              <el-input v-model="item.gender"></el-input>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="12">
            <el-form-item label="学生年龄" :prop="'dynamic.' + index + '.age'">
              <el-input v-model="item.age"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="联系电话" :prop="'dynamic.' + index + '.phone'"
                          :rules="[{required: true, message: '手机号不能为空', trigger: 'blur'},{ pattern: /^1[34578]\d{9}$/, message: '目前只支持中国大陆的手机号码' }]">
              <el-input v-model="item.phone"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-form-item>
          <el-button type="danger" icon="el-icon-delete" @click="deleteItem(item)" size="small"></el-button>
        </el-form-item>
      </div>
    </el-form>
  </div>
</template>

<script>
export default {
  name: 'dynamic',
  data() {
    return {
      form: {
        name: null,
        phone: null,
        dynamic: [],
      },
      rules: {
        name: [{required: true, message: '请输入姓名', trigger: 'blur'}],
        phone: [
          {required: true, message: '请输入电话', trigger: 'blur'},
          {pattern: /^1[34578]\d{9}$/, message: '目前只支持中国大陆的手机号码'}
        ]
      }
    }
  },
  methods: {
    addItem() {
      this.form.dynamic.push({})
    },
    deleteItem(item) {
      this.form.dynamic.splice(index, 1)
      let index = this.form.dynamic.indexOf(item)
      if (index !== -1) {
        this.form.dynamic.splice(index, 1)
      }
    }
  }
}
</script>

<style scoped lang="scss">
.container {
  width: 80%;
  height: 80%;
  margin: auto;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
}
</style>

提交方法:

/** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          const form = Object.assign({}, this.form);
          form.website = JSON.stringify(this.form.website)
          form.system = JSON.stringify(Object.assign({}, this.systemJson))
          form.hardware = JSON.stringify(Object.assign({}, this.hardwareJson))
          if (this.form.wid != null) {
            updateOwner(form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addOwner(form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Element UI中,动态添加表单是相对简单的。你可以使用动态表格组件来实现这个功能。首先,你需要在表格头部和数据渲染之前添加以下代码,以确保页面可以按预期完成渲染: this.$nextTick(() => { this.dynamicTableShow = true }) 接下来,你可以在表格组件中添加一个属性来控制序号列的显示。例如,你可以在表格组件的代码中添加以下代码来控制是否显示序号列: <dynamic-table v-if="dynamicTableShow" :table-data="tableData" :table-header="tableHeaders" :height="'550px'" :is-index="isAddIndex" /> 在Element UI官方例子中,如果你想给表格添加一个序号列或索引列,你可以在<el-table>标签内声明一个特殊的<el-table-column>,并设置type属性为"index",还可以设置该列的宽度。例如: <el-table> <el-table-column type="index" width="50"></el-table-column> <!-- 其他列 --> </el-table> 通过这样的设置,你就可以在表格中动态添加表单了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【vue】基于ElementUI实现动态表格](https://blog.csdn.net/coralime/article/details/119248972)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值