form表单校验对象中的对象的属性 / 根据表单中某一个数据动态添加其他项是否必填

<template>

<el-form ref="form" :model="form" :rules="rules" label-width="120px">

<div class="info-tag">表单信息</div>

<el-row :gutter="20">

<el-col :span="8">

<el-form-item label="数据1" prop="test1" >

<el-select v-model="form.test1" placeholder="请选择test1" style="width: 100%" @change="test1Change">

<el-option v-for="dict in dictList" :key="dict.value" :label="dict.label"

:value="dict.value"></el-option>

</el-select>

</el-form-item>

</el-col>

<el-col :span="8">

<el-form-item label="数据2" prop="child.test2"

:rules="setRules(form.test1,'child.test2')">

<el-input v-model="form.child.test2" placeholder="请输入test2" />

</el-form-item>

</el-col>

<el-col :span="24">

<el-form-item label="数据3" prop="child.test3"

:rules="setRules(form.test1,'child.test3')">

<el-input v-model="form.child.test3" placeholder="请输入test3" />

</el-form-item>

</el-col>

</el-row>

</el-form>

</template>

export default {

data(){

return{

// 表单参数

form: {

test1:null,

child: {

test2:null,

test3:null,

}

},

// 表单校验

rules: {

test1: [{required: true, message: "test1不能为空", trigger: "change"}],

'child.test2': [{required: true, message: "test2不能为空", trigger: "blur"}],

'child.test3': [{required: true, message: "test3不能为空", trigger: "blur"}],

}

}

}

methods:{

test1Change(){

// 非必填 清除校验结果

if(e === '3'){

this.$refs.form.clearValidate()

}

},

// 根据数据1选择结果 判断key对应项是否必填

setRules(type,key){

if(type === '1'|| type === '2'){//必填

this.rules[key][0].required = true

return this.rules[key]

}else {// 非必填

this.rules[key][0].required = false

return [{required: false}]

}

},

}

}

相关推荐
weixin_584121435 小时前
vue3+ts导出PDF
javascript·vue.js·pdf
尚学教辅学习资料5 小时前
Ruoyi-vue-plus-5.x第五篇Spring框架核心技术:5.1 Spring Boot自动配置
vue.js·spring boot·spring
给月亮点灯|5 小时前
Vue基础知识-脚手架开发-使用Axios发送异步请求+代理服务器解决前后端分离项目的跨域问题
前端·javascript·vue.js
quan26319 小时前
Vue实践篇-02,AI生成代码
前端·javascript·vue.js
qb10 小时前
vue3.5.18源码-编译-入口
前端·vue.js·架构
虫无涯10 小时前
【分享】基于百度脑图,并使用Vue二次开发的用例脑图编辑器组件
前端·vue.js·编辑器
NewChapter °10 小时前
如何通过 Gitee API 上传文件到指定仓库
前端·vue.js·gitee·uni-app
练习时长两年半的Java练习生(升级中)10 小时前
从0开始学习Java+AI知识点总结-30.前端web开发(JS+Vue+Ajax)
前端·javascript·vue.js·学习·web
小高00712 小时前
🧙‍♂️ 老司机私藏清单:从“记事本”到“旗舰 IDE”,我只装了这 12 个插件
前端·javascript·vue.js
EveryPossible13 小时前
终止异步操作
前端·javascript·vue.js