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.ruleskey0.required = true

return this.ruleskey

}else {// 非必填

this.ruleskey0.required = false

return {required: false}

}

},

}

}

相关推荐
我的div丢了肿么办2 小时前
element-plus表格使用:filter-method过滤导致出现无数据
前端·javascript·vue.js
贾公子2 小时前
AI 内容检测 API 接入实战——异步任务、幂等键与轮询的正确写法
vue.js
星光不问赶路人2 小时前
Vue 项目类型检查:深入理解 vue-tsc --build
前端·vue.js
WeiXin_DZbishe3 小时前
基于springboot装修风格选择系统的设计与开发-计算机毕设【课程设计】77964
java·vue.js·spring boot·后端·python·php·课程设计
雪碧聊技术3 小时前
Vue 一个页面中使用多个同类组件出现“串数据“现象?一个 key 就能解决
vue.js·v-show·一个页面使用多个相同组件·解决数据错乱·v-if、key
Java小卷6 小时前
Vue3 动态表单支持弹框组件
前端·vue.js·低代码
溪语流沙6 小时前
【Web全栈进阶】前端对接新契约:信封解包 + 统一错误处理
前端·vue.js·python·状态模式·fastapi
Q26433650236 小时前
【有源码】基于SpringBoot+Vue的居民健康体检与慢病干预管理系统-面向智慧医疗的体检预约与健康知识服务平台
java·vue.js·spring boot·mysql·毕业设计·javaweb·课程设计
雪芽蓝域zzs7 小时前
Vue导入方法三种方式对比
前端·javascript·vue.js
雪芽蓝域zzs8 小时前
从零搭建【pnpm+Vue3+TS+Setup+VueRouter4+Pinia+Axios+ElementPlus (unplugin 按需)】仿若依后台
前端·vue.js