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. Unreal 各种指针类型是怎么回事

    引言 读完本篇文章,你会了解为何UE中C++作为其开发语言,使用的指针,为何各式各样. 你需要对UE有所了解,如果不了解也没关系,也可以看下这篇文章,就当了解一下最复杂的应用的系统指针设计是如何. 可 ...

  2. Kali Linux Web 渗透测试秘籍 中文版

    第一章 配置 Kali Linux 简介 在第一章中,我们会涉及如何准备我们的 Kali 以便能够遵循这本书中的秘籍,并使用虚拟机建立带有存在漏洞的 Web 应用的实验室. 1.1 升级和更新 Kal ...

  3. quasar使用electron打包

    quasar使用electron打包  从构建好的项目中,我们不难发现,electron打包有两种方式: electron-packager打包  这篇博客是通过我尝试了很多种方法之后,最先开始,我使 ...

  4. 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。(C# EXCEL导入demo)

    1. 安装office包  https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=13255 2.需要在相应的IIS应用程序池启用 ...

  5. Computed 和 Watch 的区别

    1.computed计算属性: 作用:(1)解决模板中放入过多的逻辑会让模板过重且难以维护的问题.例如两个数据的拼接或字体颜色的判断. (2)它支持缓存,只有依赖的数据发生了变化,才会重新计算.例如模 ...

  6. Canvas:路径

    路径的概念 路径是从起始点到结束点之间的连线.个人认为,二维画布中分为线性图形和非线性图形,线性图形包括矩形.直线.曲线.圆形等各种几何图形:非线性图形包括图象.文本.像素.线性图形中又分为路径和非路 ...

  7. LeetCode-1705 吃苹果的最大数目

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-number-of-eaten-apples 题目描述 有一棵特殊的苹果树,一连 ...

  8. CF207C

    前言 学习 zzd 博客( 这题超级没有素质. 连个题解都搜不到. 好不容易搜到一个. 看了一下是 pascal. 不过还好我有办法. 树剖做 \(k\) 级祖先. 十万的俩老哥飘过. 三百毫秒优异成 ...

  9. taro框架开发微信小程序遇到的问题

    ios端,如果input放在了dispplay flex里面,会导致一系列问题 滑动屏幕,键盘不收起,input值随屏幕滚动 input之前切换,键盘不弹起来或有时弹有时不弹 键盘莫名收起 input ...

  10. VMware-安装rpm包出现警告:tigervnc-1.1.0-24.el6.x86_64.

    警告:tigervnc-1.1.0-24.el6.x86_64. 解决方法:rpm -ivh tigervnc-1.1.0-24.el6.x86_64.rpm --force --nodeps --n ...