当前位置: 首页 > news >正文

Vue 按键生成多个表单

本文通过 vue+ele,通过循环ref的方法生成多个表单,代码如下:

<template><div><el-button @click="addText" style="margin:  15px 0; ">添加字段</el-button><div v-for="item, index in dataList"><el-button @click="deleteText" type="danger" v-if="index == dataList.length - 1"style="margin-bottom: 15px;">删除字段</el-button><el-form :ref="`form${index}`" :model="item" :rules="rules" :key="index" label-width="80px"><el-form-item label="中文名称" prop="chineseName"><el-input v-model="item.chineseName"></el-input></el-form-item><el-form-item label="英文名称" prop="englishName"><el-input v-model="item.englishName"></el-input></el-form-item></el-form></div><el-button v-if="dataList.length != 0" @click="submitForms" style="margin:  15px 0; ">提交</el-button></div>
</template>
<script>export default {name: 'addForm',components: {},data() {return {dataList: [],rules: {chineseName: [{ required: true, message: "请输入英文名称", trigger: "blur" },{ pattern: /^[\u4e00-\u9fa5]+$/, message: "只能输入中文", trigger: "blur" }],englishName: [{ required: true, message: "请输入英文名称", trigger: "blur" },{ pattern: /^[a-zA-Z]+$/, message: "只能输入英文", trigger: "blur" }],},}},props: {},created() {},watch: {},computed: {},mounted() {},methods: {addText() {this.dataList.push({ chineseName: '', englishName: '' });},deleteText() {this.dataList.pop();},submitForms() {const formDataArray = [];let valid = true;this.dataList.forEach((item, index) => {this.$refs[`form${index}`][0].validate((validForm) => {if (!validForm) {valid = false;}});formDataArray.push(this.$refs[`form${index}`][0].model);});if (valid) {console.log(formDataArray);// 在这里处理提交的表单数据} else {console.log('表单验证失败');}}},beforeDestroy() {}
}
</script>
<style scoped></style>

效果如图:

完整代码已经上传github:https://github.com/majinihao123/vue-Component

在线地址:https://majinihao123.github.io/vue-Component/dist/#/addForm

有需要的自取,麻烦给git一个星星!!!

http://www.lryc.cn/news/517352.html

相关文章:

  • 网络安全:交换机技术
  • Flask 快速入门
  • C#设计模式(行为型模式):备忘录模式,时光倒流的魔法
  • 数据库高安全—角色权限:权限管理权限检查
  • FastAPI 的依赖注入与生命周期管理深度解析
  • 【express-generator】05-路由中间件和错误处理(第一阶段收尾)
  • Linux环境下确认并操作 Git 仓库
  • UDP -- 简易聊天室
  • NVIDIA在CES 2025上的三大亮点:AI芯片、机器人与自动驾驶、全新游戏显卡
  • 【通俗理解】AI的两次寒冬:从感知机困局到深度学习前夜
  • transformer深度学习实战CCTSDB中国交通标志识别
  • JavaWeb开发(六)XML介绍
  • 使用pbootcms开发一个企业官网
  • Linux C编程——文件IO基础
  • 【信息系统项目管理师】高分论文:论信息系统项目的风险管理(人民医院的信息系统)
  • UE播放声音
  • Docker Compose 启动 Harbor 并指定网络
  • WebSocket 实战案例:从设计到部署
  • selenium合集
  • JVM生产环境常用参数配置及调优建议
  • Spring Boot 3 实现 MySQL 主从数据库之间的数据同步
  • 【小程序开发】- 小程序版本迭代指南(版本发布教程)
  • MySQL 间隙锁避免“可重复读”出现“幻读”
  • 揭秘区块链隐私黑科技:零知识证明如何改变未来
  • JavaWeb开发:从入门到精通
  • 2025年01月07日Github流行趋势
  • c#集成npoi根据excel模板导出excel
  • Vue2移动端(H5项目)项目封装switch组件支持动态设置开启关闭背景色、值及组件内显示文字描述、禁用、switch 的宽度
  • MATLAB语言的语法糖
  • 数字IC设计高频面试题