在写表单的时候,容易碰到这种嵌套表单的数据校验,并且这种表单是动态添加的,网上大部分的做法是表单套表单,实际上只需要一个表单就可以了。

为了方便观看,这里只列举了两条数据

多级表单嵌套校验

  <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)
}

element表单嵌套检验+动态添加的更多相关文章

  1. Angular 表单嵌套、动态表单

    说明: 组件使用了ng-zorro (https://ng.ant.design/docs/introduce/zh) 第一类:嵌套表单 1. 静态表单嵌套 demo.component.html & ...

  2. Jquery Validate表单验证,动态添加和删除验证规则

    最近一直在忙着维护Jquery的商城,用到了Validate的表单验证,觉得很有意思,就纪录一下. // 动态添加验证规则 $("#invoice_send_region_id") ...

  3. elementUI表单嵌套表格并对每行进行校验

    elementUI表单嵌套表格并对每行进行校验 elementUI 表单嵌套表格并进行校验. 目录 效果展示 代码链接 关键代码 完整代码 效果展示 先看看这是不是需要的效果^_^ ​ 如图,Elem ...

  4. Element表单验证(2)

    Element表单验证(2) 上篇讲的是async-validator的基本要素,那么,如何使用到Element中以及怎样优雅地使用,就在本篇. 上篇讲到async-validator由3大部分组成 ...

  5. async-validator:Element表单验证

    转载文章:Element表单验证(2)   Element表单验证(2) 上篇讲的是async-validator的基本要素,那么,如何使用到Element中以及怎样优雅地使用,就在本篇. 上篇讲到a ...

  6. vue element 表单验证不通过,滚动到固对应位置

    我们在使用elementIUI实现表单验证,内容比较多的时候,提示内容会被遮挡,这时候用户不清楚什么情况,还会连续点击提交按钮.这个时候需求来啦:我们需要在表单验证不通过的时候,页面滚动到对应的位置. ...

  7. Android程序员学WEB前端(3)-HTML(3)-表单嵌套-Sublime

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/76522586觉得博文有用,请点赞,请评论,请关注,谢谢!~ 表单嵌套: <!DO ...

  8. Element表单验证(1)

    Element表单验证(1) 首先要掌握Element官方那几个表单验证的例子,然后才看下面的教程. Element主要使用了async-validator这个库作为表单验证 async-valida ...

  9. elementUI表单嵌套时间报错

    elementUI表单嵌套日期时间选择时间后报错 <el-form-item label="起始结束时间:" required prop="startime&quo ...

  10. vue+element 表单封成组件(1)

    作为一名刚接触vue不到一个月的菜鸟,思想还没有从操作DOM转变为数据驱动,看vue的代码处处别扭.组里为了让我熟悉vue交给了我一个将element 表单封装成组件的练手任务.由于开发过程中遇到的表 ...

随机推荐

  1. layui文件上传

    //前端代码 <div class="layui-form-item"> <label class="layui-form-label"> ...

  2. 安装BurpSuite (专业版)

    BurpSuite简介: Burp Suite 是用于攻击web 应用程序的集成平台.它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程.所有的工具都共享一个能处理并显示HTT ...

  3. day23 JDBC(Java Database Connection)连接 与 通配符与插入返回主键

    JDBC配置connector的jar包 1.项目下新建lib文件夹 2.将mysql-connector-java-版本号.jar复制到lib目录下 3.右键项目名,选择Properties选项 4 ...

  4. 零基础入门数据挖掘——二手车交易价格预测:baseline

    零基础入门数据挖掘 - 二手车交易价格预测 赛题理解 比赛要求参赛选手根据给定的数据集,建立模型,二手汽车的交易价格. 赛题以预测二手车的交易价格为任务,数据集报名后可见并可下载,该数据来自某交易平台 ...

  5. 【算法总结】【队列均LinkedList】栈和队列、双端队列的使用及案例

    1.栈 初始化:Stack<E> stack = new Stack<>(); 出栈:stack.pop() 或 stack.remove(stack.size() - 1) ...

  6. 【中间件】Docker

    一.Docker (一)基础概念 1.概念 是linux容器的一种封装,它是最流行的Linux容器解决方案,由go语言开发 提供简单易用的容器使用接口,方便创建.使用和销毁 2.应用场景 自动打包.持 ...

  7. bug处理记录:Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=512M; support was removed in 8.0

    1. 报错: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=512M; support was removed ...

  8. Linux 系统用户文件缺失造成“bash-4.2$”错误的解决办法

    一.问题出现的原因 造成这个现象的原因是因为用户文件夹下的bash_logout.bash_profile和bashrc这三个隐藏文件缺失 二.问题复现 现在删除这三个文件 此时问题出现了 三.问题解 ...

  9. JAVA学到方法写了一个四则运算计算器,请教一下有什么需要改进的

    package method; /* * 四则运算计算器 * */ import java.util.Scanner; public class Demo07 { public static void ...

  10. 前端HTML不使用flash兼容IE浏览器播放视频

    前言:最近公司项目上有个需求就是在IE8上不使用flash技术来去实现视频播放 分析:IE8不支持HTML5,所以不能使用video标签,在非IE的浏览器可以使用video标签 目录 我的解决 DEM ...