当前位置:   article > 正文

vue+element UI动态增减表单_elementui动态表单

elementui动态表单

    写在前面:因为最近有个需求,需要新增联系人,而联系人数量并不确定,需要根据需要添加表单,一个联系人对应一个表单。

   效果是这样的:

    思路:①写个div,把表单放在里面,旁边放2个按钮,添加和删除,且只有1个元素的时候不能显示删除按钮

               ②先用一个空的list,结合v-for来显示div,每次新增,就push一个新的空元素,点击删除,则splice一个元素

               ③,如果是点击“编辑按钮”,那么就要把list先初始化为已有数组

    具体实现代码如下:

 一、写好数组

  1. list:[],
  2. addForm:[],
  3. addStr:"",
  4. tempList:[
  5. {
  6. customerContactKey:"",
  7. contactInfo: "",//联系信息
  8. contactName: "",//联系人
  9. tel:"",
  10. email:"",
  11. address: {
  12. // 省
  13. province: "",
  14. // 市
  15. city: "",
  16. // 区
  17. district: "",
  18. //详细地址
  19. detail:""
  20. },//联系地址
  21. }
  22. ],

 二、用v-for循环显示在页面上

  1. <div><span class="msg-title">常用联系人</span></div>
  2. <div v-for="(item,index) in tempList" :key="index" style="width:1300px">
  3. <div class="toAddcontact">
  4. <el-form :model="item" :rules="addRules" ref="addForm" label-width="100px" class="add-ruleForm">
  5. <el-row>
  6. <el-col :span="6">
  7. <el-form-item label="联系人姓名" prop="contactName">
  8. <el-input v-model="item.contactName"></el-input>
  9. </el-form-item>
  10. </el-col>
  11. <el-col :span="6">
  12. <el-form-item label="联系信息" prop="contactInfo">
  13. <el-input v-model="item.contactInfo"></el-input>
  14. </el-form-item>
  15. </el-col>
  16. </el-row>
  17. <el-row>
  18. <el-col :span="6">
  19. <el-form-item label="联系电话" prop="tel">
  20. <el-input v-model="item.tel"></el-input>
  21. </el-form-item>
  22. </el-col>
  23. <el-col :span="6">
  24. <el-form-item label="联系邮箱" prop="email">
  25. <el-input v-model="item.email"></el-input>
  26. </el-form-item>
  27. </el-col>
  28. </el-row>
  29. <el-row>
  30. <el-col>
  31. <el-form-item label="联系地址" prop="address" v-model="item.address">
  32. <checkAddress ref="address" v-model="item.address" :key="index" :form="item.address"/>
  33. </el-form-item>
  34. </el-col>
  35. </el-row>
  36. </el-form>
  37. <div style="color: #409EFF;float:right">
  38. <span style="margin:20px;cursor:pointer" @click="toAdd(index)">添加</span>
  39. <span style="margin:20px;cursor:pointer" @click="toDelete(index)" v-if="tempList.length>1">删除</span>
  40. </div>
  41. </div>
  42. </div>

 三、写好css样式

  1. <style lang="scss">
  2. .msg-title{
  3. font-weight: 500;
  4. margin-right:20px;
  5. line-height: 60px;
  6. }
  7. .el-select{
  8. width:100%;
  9. }
  10. .demo-ruleForm{
  11. padding:0 80px 50px 80px;
  12. }
  13. .toAddcontact{
  14. border:1px solid #eee;
  15. padding:20px;
  16. margin:20px;
  17. width: 1000px;
  18. float:left;
  19. .add-ruleForm{
  20. padding:50px 80px 10px 80px;
  21. }
  22. }
  23. </style>

 四、定义操作方法

  1. toDelete(index){
  2. this.tempList.splice(index,1)
  3. },
  4. toAdd(index){
  5. console.log(index,this.tempList);
  6. //每次增加,都要添加一个空的数组来存放新输入的数据
  7. this.tempList.push({
  8. customerContactKey: "",
  9. contactInfo: "",//联系信息
  10. contactName: "",//联系人
  11. tel:"",
  12. email:"",
  13. address: {
  14. // 省
  15. province: "",
  16. // 市
  17. city: "",
  18. // 区
  19. district: "",
  20. //详细地址
  21. detail:""
  22. },//联系地址
  23. })
  24. console.log(this.tempList,this.ruleForm)
  25. },

这样就已经完成啦!~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/91323
推荐阅读