首页 > 其他分享 >element表单嵌套检验+动态添加

element表单嵌套检验+动态添加

时间:2023-02-08 18:11:48浏览次数:43  
标签:name goodsDetail 校验 表单 嵌套 添加 element null

在这里插入图片描述
在写表单的时候,容易碰到这种嵌套表单的数据校验,并且这种表单是动态添加的,网上大部分的做法是表单套表单,实际上只需要一个表单就可以了。
为了方便观看,这里只列举了两条数据

多级表单嵌套校验

  <el-form
      ref="ruleFormRef"
      :model="ruleForm.FormTable"
      :rules="rules"
      label-width="80px"
      class="demo-ruleForm"
      label-position="left"
      :size="formSize"
      status-icon
      >

            <div class="addFrom">
                <el-button @click="addGoodsInfo"><el-icon><Plus /></el-icon>添加</el-button>
                 <div class="addFrom_box" v-for="(item,index) in ruleForm.FormTable.goodsDetail" :key="index">
                    <!-- 嵌套检验 -->
                    <el-form-item label="商品编号" 
                    :prop="`goodsDetail.`+index+`.name`"
                    :rules="[{ required: true, message: '请输入商品编号', trigger: 'blur' }]"
                    >
                    <el-form-item label="商品数量" 
                    :prop="`goodsDetail.`+index+`.goodsNum`"  
                    :rules="[{ required: true, message: '请输入商品数量', trigger: 'blur' }]">
                    <el-input-number :min="1" :max="10" v-model="item.goodsNum" placeholder="请输入" />
                    </el-form-item>
                    
                    <el-input clearable v-model="item.name" placeholder="请输入商品编号" />
                    </el-form-item>
                 </div>
            </div>

  </el-form>

数据

// 为了演示校验,这里多套了一层
const ruleForm = reactive({
    FormTable:{
        name: 'fanction',
        goodsDetail : [
            {id:null,name:null,goodsNum:null,store:null}
        ]
    }
})

此处的数据里是一个对象内套了一个数组对象,正常情况下,校验是通过propmodule里面的数据进行校验,但此处是数组,数据在数组内部,所以用一般的prop指定数据名是校验不了的,这里用的是

:prop="goodsDetail.+index+.name"

只需要在prop中指定到当前数据在module里的位置即可。此处的goodsDetail就是v-forruleForm.FormTable.goodsDetail的最后面一位,向下寻找,goodsDetail[index].name就是当前的数据,只不过这里改成了xxx.xxx.xxx的链式写法。

校验规则写在el-form-item上面:

:rules="[{ required: true, message: '请输入商品编号', trigger: 'blur' }]"

动态添加,只需要给数组末尾添加一个空对象即可。

// 添加按钮
const addGoodsInfo = () => {
    ruleForm.FormTable.goodsDetail.push({id:null,name:null,goodsNum:null,store:null})
}

动态删除,给当前条添加一个点击事件,找到当前条删除。

// 删除按钮
const deleteGodos = (index : number) => {
   console.log(index);
   ruleForm.FormTable.goodsDetail.splice(index,1)
}

标签:name,goodsDetail,校验,表单,嵌套,添加,element,null
From: https://www.cnblogs.com/wang-fan-w/p/17102835.html

相关文章

  • 表单设计器(avue-form-design)--引入
    安装依赖npminstallelement-ui@smallwei/avue@sscfaith/avue-form-designmain.js引入importVuefrom'vue'importAppfrom'./App.vue'importrouterfrom'......
  • mysql嵌套查询更新
    先上个mysql报错sql语句UPDATEt_stub_groupSETFRANCHISE=1WHEREIDIN(SELECTIDFROMt_stub_groupWHEREMODIFY_TIME<'2023-02-0804:05:12')报错信息109......
  • 直播平台搭建,elementui的导航路由递归报错解决
    直播平台搭建,elementui的导航路由递归报错解决menu.vue-父组件: <template>  <div>   <el-menu :default-active="activeIndex" background-color="#0f......
  • Element Plus
    ElementPlus是基于vue3的UI框架官网https://element-plus.gitee.io/zh-CN/安装cnpminstallelement-plus--save查看package.json导入在main.js中加入import......
  • vue+element DatePicker日期选择器封装(可自定义快捷选择时间)
    前言今天封装了一个DatePicker日期选择器,发现带快捷选择的不太好封装,我需要在不同的地方快捷选择不同的时间,并且快捷显示的时间是从昨天开始,在网上找了一圈都没找到便自己......
  • 多层嵌套的数组扁平化处理
    数组将多层嵌套的数组做扁平化处理例如:类似于将letarr=[1,2,3,[4,[5,6,[7],8]],9]处理成[1,2,3,4,5,6,7,8,9]方法一:递归functionflattenArr(arr){leta......
  • navMenus 的动态路由 嵌套 2
    <template><el-colid="navMenu"><el-menu:default-active="defaultActive"background-color="#0b172e"text-color="#A7B1C2"active-text-c......
  • navMenus 的动态路由 嵌套 1
    <template> <divclass="navMenu">  <templatev-for="menuinnavMenus">   <el-submenu    :key="menu.path"    :index="menu.path"......
  • 注册功能-功能分析、表单校验1
    功能分析register.html1、使用js完成表单校验2、使用ajax完成表单提交3、注册完成,跳转成功页面registUserServlet1、获取数据2、封装user对象3、调用service完成注......
  • ASP.NET Core+Element+SQL Server开发校园图书管理系统(四)
    随着技术的进步,跨平台开发已经成为了标配,在此大背景下,ASP.NETCore也应运而生。本文主要基于ASP.NETCore+Element+SqlServer开发一个校园图书管理系统为例,简述基于MVC三......