vue怎样做多层循环表单验证?
Admin 2021-10-19 群英技术资讯 1253 次浏览
vue怎样做多层循环表单验证?表单验证我们之前也有了解过,这篇主要给大家分享的是使用vue + el-form 实现的多层循环表单验证的内容,实现代码如下,感兴趣的朋友可以参考。
html
<el-form :model="formObj" :rules="rules" ref="ruleForm">
<el-form-item :label="'护理记录项目配置:'" label-width="180px">
<template v-for="(formItem, index) in formObj.formDictExtendDoList">
<div class="hljl-container" :key="formItem.id">
<el-row>
<el-col :span="8">
<el-form-item
:label="'字段名称:'"
label-width="90px"
:rules="rules.fieldName"
:prop="'formDictExtendDoList.'+index+'.fieldName'"
>
<el-input
v-model.trim="formItem.fieldName"
type="text"
:clearable="true"
maxLength="100"
placeholder="请输入"
/>
<!--@blur="isRepeat(formItem, index, 'fieldName')"-->
</el-form-item>
</el-col>
<template
v-for="(child, index1) in formItem.item"
v-show="formItem.type === 2"
>
<el-col :span="8" :key="child.id">
<el-form-item
:label="'选项' + (index1+1) + ':'"
label-width="90px"
:rules="rules.value"
:prop="'formDictExtendDoList.'+index+'.item.'+index1+'.value'"
>
<el-input
v-model.trim="child.value"
@input="forceUpdate"
:clearable="true"
type="text"
maxlength="20"
placeholder="请输入"
/>
</el-form-item>
</el-col>
</template>
</el-row>
</div>
</template>
</el-form-item>
</el-form>
js
let _THAT
export
default {
name: 'formMangeAdd',
data() {
return {
formObj: {
formDictExtendDoList: []
},
rules: {
fieldName: [{
required: true,
message: '请输入',
trigger: 'blur'
}, {
validator: this.itemValidator,
trigger: 'blur'
}],
value: [{
validator: (rule, value, callback) = > {
// I'm a genius.
let that = _THAT
that.forceUpdate()
let field = rule.field
let arr = field.split('.')
let index = +arr[1]
let index1 = +arr[3]
let _value = that.formObj.formDictExtendDoList[index].item[index1].value
if (_value === '' || _value === null || _value === undefined) {
callback(new Error('请输入'))
} else {
callback()
}
},
trigger: 'blur'
}]
}
}
},
beforeCreate() {
_THAT = this
},
created() {
// 测试数据
let test = [{
id: 'id_1595641858891',
// 唯一配置id
fieldName: '字段名称',
// 字段名称
item: []
}, {
id: 'id_1595641858892',
// 唯一配置id
fieldName: '字段名称',
// 字段名称
item: []
}, {
id: 'id_1595641858893',
// 唯一配置id
fieldName: '字段名称',
// 字段名称
item: [{
id: 'item_id_1595641858891',
// 唯一id
value: '选项1'
}, {
id: 'item_id_1595641858892',
// 唯一id
value: '选项2'
}]
}]
this.formObj.formDictExtendDoList = test
},
methods: {
/**
* 重复性判断
**/
itemValidator: (rule, value, callback) = > {
let that = _THAT
that.forceUpdate()
let field = rule.field
let ruleArr = field.split('.')
let index = +ruleArr[1]
let type = ruleArr[2]
if (value === '') {
callback()
return false
}
let arr = []
for (let i = 0; i < that.formObj.formDictExtendDoList.length; i++) {
let formDictExtendDoListItem = that.formObj.formDictExtendDoList[i]
let formDictExtendDoListFieldName = formDictExtendDoListItem.fieldName
let formDictExtendDoListProjectName = formDictExtendDoListItem.projectName
if (index !== i) {
if (type === 'fieldName') {
if (formDictExtendDoListFieldName !== '') {
if (formDictExtendDoListFieldName === value) {
arr.push(i)
}
}
}
}
}
if (arr.length !== 0) {
if (type === 'fieldName') {
callback(new Error('与配置' + (+arr[0] + 1) + '的字段名称重复'))
setTimeout(function() {
that.formObj.formDictExtendDoList[index].fieldName = ''
}, 500)
}
} else {
callback()
}
},
forceUpdate() {
this.$forceUpdate()
}
}
}
以上就是关于vue怎样做多层循环表单验证的介绍啦,本文代码具有一定的借鉴价值,有需要的朋友可以参考学习。最后,想要了解更多可以继续浏览群英网络其他相关的文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
我们运行打包后会发现less转为了css文件,但css文件确通过js加入style标签,下面我们将css进行拆分出来,并以link标签引入,具体实现步骤一起看看吧
这篇文章主要介绍了利用JS创建一个录屏功能,创建这个功能钱我们首先创建一个HTML文件,包含记录按钮和一个播放标签,下面来看看创建的详细过程
这篇文章主要介绍了 vue 动态组件component ,vue提供了一个内置的<component>,专门用来实现动态组件的渲染,这个标签就相当于一个占位符,需要使用is属性指定绑定的组件,想了解更多详细内容的小伙伴请参考下面文章的具体内容
JavaScript实现简单的音乐播放器 本文实例为大家分享了JavaScript实现简单音乐播放器的具体代码,供大家参考,具体内容如下 主要功能:快进.快退.暂停.上下一首.禁音.鼠标控制音量.自动下一首.显示歌名 <html> <head> @*不提供音频*@ <meta name="viewport" content="width=device-width" /> <title>ceshi14</title> ...
方法:1、利用“document.getElementById("id")”语句根据id值获取指定的html标签元素对象;2、利用“标签元素对象.style.display="none";”语句将获取到的html标签元素隐藏即可。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008