element-ui 中,表单数据一般为对象,但是也有是数组的情况,比如上面图示:账号和密码可以是多个,点击添加会增加一条,点击删除会删除一条

表单数据为

form:{
accounts:[
{
account: '',
password: ''
}
]
}

表单中代码

<el-form ref="form" :model="form" label-width="100px" label-suffix=":">
<el-row v-for="(item, index) in form.accounts" :key="index">
<el-col :span="11">
<el-form-item
label="系统账号"
:prop="`accounts.${index}.account`"
:rules="[
{required: true, message: '请输入系统账号', trigger: 'blur'},
{validator: checkAccount, trigger: 'blur'},
{min: 1, max: 16, message: '系统账号至多只能包含16个字符', trigger: 'blur'}
]"
>
<el-input
v-model="item.account"
placeholder="请输入系统账号"
clearable
autocomplete="off"
/>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item
label="账号密码"
:prop="`accounts.${index}.password`"
:rules="[
{required: true, message: '请输入账号密码', trigger: 'blur'},
{min: 1, max: 16, message: '账号密码至多只能包含16个字符', trigger: 'blur'}
]"
>
<el-input
v-model="item.password"
type="password"
placeholder="请输入账号密码"
clearable
autocomplete="new-password"
/>
</el-form-item> </el-col>
<el-col v-if="form.accounts.length >= 2" :span="2">
<div class="form-control-delete">
<el-button icon="el-icon-delete" circle class="btn-editDel" @click="deleteAccount(index)" />
</div>
</el-col>
</el-row>
<div class="form-control-add">
<el-button icon="el-icon-plus" class="btn-add" @click="addAccount">添加账号</el-button>
</div> </el-form>

验证两个账号是否重复

data() {
const checkAccount = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入系统账号'))
} else {
const len = this.form.accounts.length
if (len <= 1) {
callback()
} else {
const allAccount = this.form.accounts.map(v => v.account)
const len = allAccount.length
const filterAccount = allAccount.filter(v => v !== value)
if (len - 1 === filterAccount.length) {
callback()
} else {
callback(new Error('创建的系统账号不能重复!'))
}
}
}
} return {
checkAccount: checkAccount,
}
}

  

vue 中 表单数据为数组,v-for 循环表单数据的更多相关文章

  1. vue中过滤器比较两个数组取相同值

    在vue中需要比较两个数组取相同值 一个大数组一个 小数组,小数组是大数组的一部分取相同ID的不同name值 有两种写法,两个for循环和map写法 const toName = (ids, arr) ...

  2. 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据

    前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于“父子组件通信”的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰符做父子组件数据双向 ...

  3. 在vue中场景,循环行,点击当前行编辑数据

    当前列表 点击编辑,行变为编辑框. <Row style="color:#999;margin-bottom:11px"> <Row style="ma ...

  4. vue中通过.sync修饰符实现子组件修改父组件数据

    vue父子通讯是单向数据流,也就是子组件不能修改父组件的值,但是在一些情况下是需要这样做的. 先看官方文档: 接下来举例实现 1.实现一个双向数据绑定,子组件改变的时候,父组件也在改变 父组件 < ...

  5. vue中,基于echarts 地图实现一个人才回流的大数据展示效果

    0.引入echarts组件,和中国地图js import eCharts from 'echarts' import 'echarts/map/js/china.js'// 引入中国地图 1. 设置地 ...

  6. VUE中让由全局变量添加生成的新数组不随全局变量的变化而变化

    问题场景: const addOptions = { singleOrComplex, totalNum: this.smallTotalPrice, selectList: this.purchas ...

  7. vue中v-model详解

    vue中经常使用到<input>和<textarea>这类表单元素,vue对于这些元素的数据绑定和我们以前经常用的jQuery有些区别.vue使用v-model实现这些标签数据 ...

  8. SpringMVC 接收表单数据、数据绑定、解决请求参数中文乱码

    接收表单数据有3种方式. 1.使用简单类型接收表单数据(绑定简单数据类型) 表单: <form action="${pageContext.request.contextPath}/u ...

  9. VUE中父组件向子组件传递数据 props使用

    VUE中,子组件是不能直接访问父组件的数据(一般来说,当然如果你要破坏原则也是可以),如下< <body> <div id="fathercomponent" ...

  10. JS中的唯一容器:数组

    JS中的唯一容器:数组 一.什么类型的数据都可以存储 二. 定义的方式有两种  1 .    var  arra=[];var  arra=[“a”,“b”,"c"];   2.v ...

随机推荐

  1. NETAPP硬盘更换

    netapp硬盘新增 一.找到坏盘,插上新盘# 1.登陆到想要点亮的硬盘相对应的控制器上,并进去高级模式. priv set advanced 2.利用disk show -v 查看想要点亮的硬盘名字 ...

  2. 推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐

    1. 推荐算法的初步理解 如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加有效率的连接,推荐系统可以更有效率的连接用户与内容和服务,节约了大量的时间和成本. 1.1 推荐系统主要解决问题 ...

  3. LG P3768 简单的数学题

    \(\text{Problem}\) 求 \[\left(\sum_{i=1}^n \sum_{j=1}^n i j \gcd(i,j)\right) \bmod p \] \(n \le 10^{1 ...

  4. CF1358D The Best Vacation

    题目传送门 思路 做这道题主要是需要发现一个性质:选择的区间必定是从某一个月的最后一天开始往前连续的一段区间. 考虑如何证明这个结论,设这个月有 \(x\) 天,假设有更优的方案满足到下一个月的第 \ ...

  5. 在windows环境中如何批量添加IP地址 and 求助 : 在CMD命令行中配置IP地址, 提示 : 未能配置DHCP服务, 接口可能已经断开, 系统找不到指定的文件.

    转载csdn: 在windows环境中如何批量添加IP地址_user_yuewu的博客-CSDN博客_windows批量添加ip 求助 : 在CMD命令行中配置IP地址, 提示 : 未能配置DHCP服 ...

  6. Ubuntu20.04桌面系统快速上手教程

    转载csdn:ChunKai93 https://blog.csdn.net/iamzhoujunjia/article/details/105349441

  7. 怎么下载blob视频 .mu38视频下载转换格式

    首先获取视频m3u8地址 浏览器按 F12进入开发者模式 选择 Network 搜索.m3u8 RequestURL 获取视频url m3u8文件介绍 M3U(Moving Picture Exper ...

  8. 基于Linux编译JDK18

    1.概述 JDK都没手动编译过,敢说自己是Java程序员吗?(By 羊哥--JDK都没手动编译过,敢说自己是Java程序员吗?实战编译Java源码(JDK源码,JVM)视频教程_哔哩哔哩_bilibi ...

  9. vscode注释插件

    VSCODE注释插件:koro1FileHeader 按koroFileHeader 插件,配置默认注释 1.在扩展中搜索koroFileHeader,安装 2.安装完成后,在设置中搜索,koro1F ...

  10. [后端-Python]-项目练习集

    1 1. 2 ''' 3 knowledge_point: 4 1.练习if...else: 5 2.练习while; 6 3.练习列表的切片取值: 7 8 requirements: 9 购物车: ...