当前位置: 首页 > news >正文

Element UI、Element Plus 里的表单验证的required必填的属性不能动态响应?

 一 问题背景

想要实现:

新增/修改对话框中(同一个),修改时“备注”字段非必填,新增时"备注"字段必填

结果发现直接写不生效-初始化一次性

edit: [{ required: true, message: "请输入备注", trigger: "blur" }],

写成validator虽然生效但是必填时没有*-动态但没required配置项匹配的样式

validator: (rule, value, callback) => {
if (dialogType.value === 'edit' && !value?.trim()) {
callback(new Error('请输入备注'));
} else {
callback();
}
},
trigger: 'blur'
  remark: [{validator: (rule: any, // Element Plus 内部规则对象,通常无需具体类型value: string, // 输入框的值(根据字段名 remark 推断为字符串)callback: (error?: Error) => void // Element Plus 验证回调函数) => {if (dialogType.value === "edit" && !value?.trim()) {callback(new Error("请输入备注"));} else {callback();}},trigger: "blur",},],

 二 解决方法

(一)prop写成判断对应不同rules规则,对号入座

        <el-form-itemlabel="备注":prop="dialogType === 'edit'? 'remark' : ''"><el-input v-model="form.remark" /></el-form-item>
const dialogType = ref<"add" | "edit">("add");
const rules = {remark: [{ required: true, message: "请输入备注", trigger: "blur" }]
}

(二)把rules挪到el-form-item内部

        <el-form-itemlabel="备注"prop="remark":rules="{required: dialogType === 'edit' ? true : false,message: '请输入备注',}"><el-input v-model="form.remark" /></el-form-item>

感觉实现的都挺简洁的,比起监听什么的实现方式

相关文章:

  • 题解:[ABC385F] Visible Buildings
  • GNOME桌面隐藏回收站和分区
  • 赛灵思 XC7K325T-2FFG900I FPGA Xilinx Kintex‑7
  • 基于SpringBoot的中华诗词文化分享平台-项目分享
  • 【FPGA开发】Vivado开发中的LUTRAM占用LUT资源吗
  • FPGA设计 时空变换
  • 前端学习笔记
  • 系统架构师2025年论文《论软件三层结构的设计》
  • Ubuntu24.04安装ROS2问题
  • 服务器上安装maven
  • 题解:P11185 奖牌排序
  • linux下内存地址数学运算
  • HTTP状态码有哪些常见的类型?
  • 搭建 Spark - Local 模式:开启数据处理之旅
  • 推荐一个简单又好用的在线视频编辑工具,在线免费使用,便捷高效!
  • ​​批发商商城小程序制作哪家强?开启高效批发新模式!
  • Python爬虫从入门到实战详细版教程Char01:爬虫基础与核心技术
  • 在 master 分支上进行了 commit 但还没有 push,怎么安全地切到新分支并保留这些更改
  • STL常用算法——C++
  • Unity 跳转资源商店,并打开特定应用
  • “80后”师虎已任陕西旬邑县委书记
  • 上海银行换帅:顾建忠出任党委书记,金煜辞任董事长
  • 重返母校:哈佛大学医学院博士后陈则宇入职北大基础医学院
  • 62岁中国国际商会副会长、康力电梯创始人王友林逝世
  • 钱理群|直面衰老与死亡
  • 由“环滁皆山”到“环滁皆景”,滁州如何勾勒“文旅复兴”