公司最近的项目有个添加动态表单的需求,总结一下我在表单验证上遇到的一些坑。

如图是功能的需求,这个功能挺好实现的,但是表单验证真是耗费了我一些功夫。

vue+element在表单验证上有一些限制,必须依照element示例的格式才能验证通过。

附上代码:

 <el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px" class="demo-dynamic">
<div v-for="(domain, index) in dynamicValidateForm.list">
<el-form-item label="" style="margin-left: -70px">
<el-select v-model="dynamicValidateForm.list[index].organizer.positionId" @change="Positon($event)">
<el-option
v-for="item in positionList"
:key="item.id"
:label="item.name"
:value="item.id"
:disabled="item.disabled"
></el-option>
</el-select>
</el-form-item>
<el-form-item style="margin-left: -29px"
label="人数"
:prop="'list.' + index + '.organizer.number'"
17 :rules="{required: true, message: '请输入人数', trigger: 'blur'}"
>
<el-input v-model="domain.organizer.number" placeholder="人数"></el-input>
</el-form-item>
<el-form-item label="直属下级" v-if="dynamicValidateForm.list[index].organizer.positionId!==1">
<el-select v-model="dynamicValidateForm.list[index].organizer.parentId">
<el-option
v-for="item in positionList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<span style="margin-left: 30px">任务</span>
<span v-for="(itm,i) in dynamicValidateForm.list[index].dutyId" :key="i">
<el-form-item label="" style="width: 100px;" id="ren"
:prop="'list.' + index + '.dutyId.'+i+'.dutyid'"
34 :rules="{required: true, message: '请选择任务', trigger: 'change'}"
>
<el-select v-model="dynamicValidateForm.list[index].dutyId[i].dutyid">
<el-option
v-for="item in dutyList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</span>
<span class="add" @click="addWork(index)">增加任务+</span>
</div>
<p class="addLevel" @click="addLevel()">+增加职位</p>
</el-form>

我加粗并且是紫色的地方需要着重注意。:prop和:rulues还有v-model里面的字段必须是一一对应的,不然会一直验证不通过,这是验证最关键的

我害怕验证不通过,选择在行内验证

  dynamicValidateForm:{         //必须将数组放到表单对象里,不然会报错
list:[
{
organizer: {
positionId:'',
parentId:'',
number:'',
},
dutyId:[
{
dutyid:''
}
]
}
],
},

还有注意的一些验证规则:

  bus: [
{required: true, message: '请填写公交站点', trigger: 'blur'},
{ min: 1, max: 50, message: '50个字符以内', trigger: 'blur'} //这种验证必须是内容必须是字符串才能通过,不然一直会提示50个字符以内
], //如果必须填写数字,可以这样改
bus: [
{required: true, message: '请填写公交站点', trigger: 'blur'},
 {pattern:/^\d{1,50}$/, message: '50个字符以内', trigger: 'blur'}  //正则转换成数字
],

vue+element 动态表单验证的更多相关文章

  1. vue踩坑:vue+ element ui 表单验证有值但验证失败。

    一.如图:有值但是验证失败 二. <el-form :model="form" :rules="rules"> <el-form-item l ...

  2. 关于vue.js element ui 表单验证 this.$refs[formName].validate()的问题

        方法使用前需了解: 来自”和“小编的小提示: 首先打印一下this.$refs[formName],检查是否拿到了正确的需要验证的form. 其次在拿到了正确的form后,检查该form上添加 ...

  3. ElementUI表单验证攻略:解决表单项启用和禁用验证的切换,以及动态表单验证的综合性问题

    试想一种比较复杂的业务场景: 表格(el-table)的每一行数据的第一列是勾选框,最后一列是输入框.当某一行的勾选框勾上时,启用该行的输入框,并开启该行输入框的表单验证:取消该行的勾选框,则禁用该行 ...

  4. vue validate多表单验证思考 之前写过一个里外层,现在觉得不合适,应该平行的写,然后都给ret,最后判断ret 再做出反应,这样整体表单的所有验证就都报验证,然后最后提交的时候把组件内的对象合并到总的对象,再提交

    vue validate多表单验证思考 之前写过一个里外层,现在觉得不合适,应该平行的写,然后都给ret,最后判断ret 再做出反应,这样整体表单的所有验证就都报验证,然后最后提交的时候把组件内的对象 ...

  5. Vue Element Form表单时间验证控件使用

    如果直接使用Element做时间选择器,其规则(rules)不添加type:'date',会提示类型错误,处理这个需要规范值的类型为date. 时间格式化过滤器 import Vue from 'vu ...

  6. 如何在Vue的项目里对element的表单验证进行封装

    介绍需求 熟悉并优化公司项目的第五天,领导说能不能把表单验证封装一下,我打开代码一看 由于是后台管理系统,无数个需要验证的输入框,由于截图长度受限,只能展示部分,类似于这种页面还有无数个!代码重复率非 ...

  7. vue elementui form表单验证

    最近我们公司将前端框架由easyui 改为 vue+elementui .自学vue两周 就开始了爬坑之路.业余时间给大家分享一下心得,技术新手加上第一次分享(小激动),有什么不足的地方欢迎大家指正, ...

  8. element自定义表单验证

    element-ui框架下修改密码弹窗进行表单验证. 除了基础校验,密码不为空,长度不小于6字符,需求中还需校验密码由数字和字母组合. 处理代码如下: <el-dialog :visible.s ...

  9. vue 常用的表单验证,包括手机号码,固定电话和身份证...

    <template> <div> <pl-content-box> <pl-page-nav :show-previous=true></pl-p ...

随机推荐

  1. 关于 ASP.NET Core 中的 RazorPages

    Contact.cshtml @page @model ContactModel @{ ViewData["Title"] = "Contact"; } < ...

  2. Linux - 几种方法来实现scp拷贝时无需输入密码

    前言 在实际工作中,经常会将本地的一些文件传送到远程的机器上.scp是一个很好用的命令,缺点是需要手工输入密码. 如何在shell脚本中实现传输文件,而不用手工输入密码呢?接下来介绍三种方法. 一.建 ...

  3. 湖南省web应用软件(中慧杯)

    湖南省web应用软件 写这篇博客已经是比完赛的第四天了,我还记得那天下着小雨.我们早早的到了比赛的现场抽检机器,在比赛前一天我很是激动.我还记得我们从学校,去株洲的时候我们的领导来给我加油,特别是我的 ...

  4. go-家庭收支记账软件例子

    家庭收支记账软件项目 项目需求说明 1) 模拟实现基于文本界面的<家庭记账软件> 2) 该软件能够记录家庭的收入.支出,并能够打印收支明细表 项目的界面 看代码效果 项目代码实现 实现基本 ...

  5. 在python中实现随机选择

    想从一个序列中随机抽取若干元素,或者想生成几个随机数. random 模块有大量的函数用来产生随机数和随机选择元素.比如,要想从一个序列中随机的抽取一个元素,可以使用random.choice() : ...

  6. Java生鲜电商平台-Java后端生成Token架构与设计详解

    Java生鲜电商平台-Java后端生成Token架构与设计详解 目的:Java开源生鲜电商平台-Java后端生成Token目的是为了用于校验客户端,防止重复提交. 技术选型:用开源的JWT架构. 1. ...

  7. DataGridView中在新增行时怎样设置每个Cell单元格的字体样式

    场景 DataGridView怎样实现添加.删除.上移.下移一行: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10281414 ...

  8. XAF-内置初始化数据 (XPO)

    Open the Updater.cs (Updater.vb) file, located in the MySolution.Module project's Database Update fo ...

  9. SpringCloud Gateway拦截器遇到的小坑汇总

    很多朋友在使用SpringCloudGateway的时候可能都碰到过以下几个问题 SpringCloudGateway中如何读取Post请求体 private BodyInserter getBody ...

  10. Unity API学习笔记(1)

    首先创建测试项目: 这里我选择了2D,其实都可以,之后可以在项目中修改. 修改方法: 进入正题. 首先看一下官方提供的>手册和>脚本API文档. 创建C#脚本文件并打开: 默认的脚本文件为 ...