vue2:elementUI中Form 表单在特定情况下做动态rules添加删除

news/2025/3/26 12:16:15/

先看需求:(不想看的直接拉到最后)

 【需求说明】

6、如状态为上架时,库存为必填,下架状态时,库存为可填,前面无星号

实现方法:使用this.$set()和this.$delete()

上代码:

由于设计商业隐私,代码只上传一部分:
 

<el-form :model="commodityForm" ref="commodityForm" :rules="rules" label-width="120px">其他字段......<el-form-item label="上下架状态" prop="status"><el-switchv-model="commodityForm.status":active-value="1":inactive-value="0"@change="switchChange"></el-switch></el-form-item></el-form>

表单data中原来的rules:

      // 表单校验rules:{name: [{ required: true, message: "请输入商品名称", trigger: ['blur','change']}],title: [{ required: true, message: "请输入商品标题", trigger: ['blur','change']}],commodityFormImg:[{ required: true, message: '请上传商品图片', trigger: 'change'}],typeId: [{ required: true, message: '请选择所属分类', trigger: 'change'}],brandId: [{ required: true, message: '请选择商品品牌', trigger: 'change'}],specification: [{ required: true, message: '请选择商品规格', trigger: ['blur','change']}],sellingPrice: [{ required: true, message: '请输入销售价', trigger: ['blur','change']}],// stock: [{ required: true, message: '请输入库存', trigger: ['blur','change']}],detail: [{ required: true, message: "商品详情不能为空", trigger: "blur" },{ validator: validateEditor, trigger: 'blur,change' }]},

不添加上下架状态的rules

在change事件中进行判断:重点方法在这里!!!!!!!!!!

    // 上下架开关事件switchChange(e) {if(e != 1) {//删除校验的关键的两行代码(两行都要!!!!!!!!!!!!!!!)// 这个只能删除文字提示,但是星号还在,this.$refs["commodityForm"].clearValidate(["stock"]);// 这个只能删除星号提示,但是文字还在this.$delete(this.rules,'stock');}else{//添加校验代码(!!!!!!!!!!!!!!!)this.$set(this.rules,'stock',[{ required: true, message: '请输入库存', trigger:      ['blur','change']}])}}

动态添加删除rules

2023-1-29二更一个最新的方法:

 <el-form-item label="库存" prop="stock" :rules="commodityForm.status == 1 ? { required: true, message: '请输入库存', trigger: ['blur','change']} : {}"><el-input v-model.trim="commodityForm.stock" @input="commodityForm.stock = commodityForm.stock.replace(/[^\d]/g, '')" size="small" placeholder="请输入库存"></el-input></el-form-item>

感谢我的好同事教我做事哈哈哈

 :rules="commodityForm.status == 1 ? { required: true, message: '请输入库存', trigger: ['blur','change']} : {}"

同时方法中的代码留一个:

   switchChange(e) {if(e != 1) {this.$refs["commodityForm"].clearValidate(["stock"]);}}


http://www.ppmy.cn/news/86484.html

相关文章

【Linux】shell编程—awk编辑器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、awk编辑器1.工作流程3.常用选项 二、awk的基础用法1.输出文件中的某一列2.根据特定条件筛选数据3.按照分隔符进行切割4.在匹配到特定字符串时执行操作5.BEGIN打…

适合ToB企业的网络营销方法和渠道

ToB服务往往项目复杂&#xff0c;交付周期长&#xff0c;其客户采购也需要复杂的审批流程&#xff0c;一些在ToC领域非常好用的推广方法搬过来却收效甚微。ToB&#xff08;或称2B&#xff09;企业的网络营销一直是营销难点&#xff0c;小马识途营销顾问服务过众多2B企业&#x…

SpringBoot --- 运维篇

一、打包与运行 1.1、程序打包与运行&#xff08;Windows版&#xff09; 所谓打包指将程序转换成一个可执行的文件&#xff0c;所谓运行指不依赖开发环境执行打包产生的文件。 SpringBoot程序是基于Maven创建的&#xff0c;在Maven中提供有打包的指令&#xff0c;叫做packag…

macOS上安装和使用nvm

macOS 上安装和使用 nvm nvm&#xff08;Node Version Manager&#xff09;是一款用于管理 Node.js 版本的工具&#xff0c;可以让您在同一台计算机上轻松地切换和管理多个 Node.js 版本。本文将向您介绍如何在 macOS 上安装和使用 nvm。 一、安装 nvm 打开终端应用程序。 使…

车载以太网 - SomeIP - 协议用例 - on-wire

目录 Specification of the SOME/IP on-wire format 1.1、验证Response报文中的源IP地址为Request报文中的目标IP地址

第七章 文件读写

内容框图 7.1 文件读写介绍 文件打开和关闭 用word编写一份简历&#xff0c;应该有哪些流程&#xff1f; 打开word软件&#xff0c;新建一个word文件写入个人简历信息保存文件关闭word软件 同样&#xff0c;编程中操作文件的整体过程类似。 打开文件&#xff0c;或者新建立一个…

【LeetCode】168. Excel表列名称

168. Excel表列名称&#xff08;简单&#xff09; 思路 显然&#xff0c;这是一道从 1 开始的的 26 进制转换题。 对于一般性的进制转换题目&#xff0c;只需要不断地对 columnNumber 进行 % 运算取得最后一位&#xff0c;然后对 columnNumber 进行 / 算&#xff0c;将已经取得…

Qt经典面试题:Qt开启线程的几种方式

方法一&#xff1a;从QThread类派生 ①创建一个类从QThread类派生 ②在子线程类中重写 run 函数, 将处理操作写入该函数中 ③在主线程中创建子线程对象, 启动子线程,调用start()函数 这种方法涉及到创建一个从QThread类派生的子类&#xff0c;并在该子类中重写run()函数。处理操…