前言
日常开发中,动态添加表单的场景还是蛮多的,可能第一次听到动态添加表单的同学会有一点懵,但其实实现起来还是很简单的,下面一起来看看吧。
实现思路
当我们点击 “新增车辆信息” 按钮时,通过一个标识判断表单内容是否全部填写了,若全部填写了则添加一个新的表单,反之提醒用户完善信息;
当我们点击 “删除此条车辆信息” 按钮时,通过拿到的当前下标再配合splice方法实现删除表单。
源码
<template>
<div class="addFormBox">
<!-- 循环data中定义的数组 -->
<div v-for="(item,index) in formLabelAlign" :key="index">
<div class="formOuterBox">
<div class="formCotantBox">
<h3>车辆信息 {{index+1}}</h3>
<!-- 表单内容 -->
<el-form label-width="80px">
<el-form-item label="车牌号">
<el-input v-model="item.carBoard"></el-input>
</el-form-item>
<el-form-item label="车牌颜色">
<el-input v-model="item.carColor"></el-input>
</el-form-item>
<el-form-item label="排放阶段">
<el-input v-model="item.discharge"></el-input>
</el-form-item>
</el-form>
</div>
<!-- 操作按钮 -->
<div>
<el-button @click="addForm" type="success">添加车辆信息</el-button>
<el-button v-if="index!=0" @click="removeIdx(item, index)" type="danger">删除此条车辆信息</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
// 表单绑定数据
formLabelAlign: [
{
carBoard: "",
carColor: "",
discharge: "",
},
],
};
},
methods: {
// 添加操作
addForm() {
// 定义一个标识,通过标识判断是否能添加信息
let statusType = true;
this.formLabelAlign.forEach((item) => {
if (
item.carBoard == "" ||
item.carColor == "" ||
item.discharge == ""
) {
this.$message({
message: "请完善信息后在添加",
type: "warning",
});
statusType = false;
}
});
if (statusType) {
this.formLabelAlign.push({
carBoard: "",
carColor: "",
discharge: "",
});
}
},
// 删除操作
removeIdx(item, index) {
this.formLabelAlign.splice(index, 1);
this.$message({
message: "删除成功",
type: "success",
});
},
},
};
</script>
<style scoped>
.addFormBox {
margin: 20px;
}
.formOuterBox {
margin-bottom: 20px;
padding: 30px 40px;
background: white;
border-radius: 30px;
}
h3 {
margin: 0px 0px 20px 0px;
}
</style>
实现效果
提交后的数据
有关于 element 如何处理动态数据循环的表单验证,大家可移步博主另一篇文章(element处理动态数据循环的表单验证)
本资源由随笔博客发布。发布者:五维国度,转载请注明出处:http://blog.suibi.site/archives/4309
本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。