明霞山资源网 Design By www.htccd.com
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 + el-form 实现的多层循环表单验证的详细内容,更多关于vue 表单验证的资料请关注其它相关文章!
明霞山资源网 Design By www.htccd.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
明霞山资源网 Design By www.htccd.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。