当前位置:   article > 正文

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

vue2 rules

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

 【需求说明】

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

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

上代码:

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

  1. <el-form :model="commodityForm" ref="commodityForm" :rules="rules" label-width="120px">
  2. 其他字段......
  3. <el-form-item label="上下架状态" prop="status">
  4. <el-switch
  5. v-model="commodityForm.status"
  6. :active-value="1"
  7. :inactive-value="0"
  8. @change="switchChange"
  9. >
  10. </el-switch>
  11. </el-form-item>
  12. </el-form>

表单data中原来的rules:

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

不添加上下架状态的rules

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

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

动态添加删除rules

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

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

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/91466
推荐阅读
相关标签
  

闽ICP备14008679号