Vue2中使用ElementUI组件Form组件的校验validate

本文介绍了在Vue.js中使用el-form进行表单验证的方法,包括绑定ref、设置rules对象、指定prop属性。强调了v-model的正确使用以及自定义校验规则,特别是确保双向绑定的prop与model值一致,以确保校验生效。同时,文章提供了一个例子,展示了如何检查图片列表中是否选择了默认图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先准备一些el-form元素 这里面el-form中:model(v-bind:model)是单项绑定的,如果你写成了v-model=""可能会出现校验没有效果的情况。

 这是校验过后的结果了 

现在开始使用下吧! 

1.在el-form中绑定一个ref,名字自拟,后续触发检验结果需要使用到它

2.准备rules对象,里面装校验的内容

3.需要校验的元素上需要加上prop,这个是对应校验的内容的。注意的是 如果是双向绑定的如(input)的prop的名字必须和绑定的元素名字一样,比如我的收集数据为SkuForm.skuName那么prop值为skuName就好了,否则有可能校验不起来

<el-form ref="SkuForm" label-width="100px" :rules="rules" :model="SkuForm">
        <el-form-item label="SPU名称" prop="prop">
          <span>{{ spu.spuName }}</span>
        </el-form-item>
        <el-form-item label="SKU名称" prop="skuName">
          <el-input placeholder="请输入SKU名称" v-model="SkuForm.skuName"></el-input>
        </el-form-item>
        <el-form-item label="价格(元)" prop="price">
          <el-input placeholder="价格(元素)" v-model="SkuForm.price"></el-input>
        </el-form-item>
        <el-form-item label="重量(千克)" prop="weight">
          <el-input placeholder="重量(千克)" v-model="SkuForm.weight"></el-input>
        </el-form-item>

        <el-form-item label="规格说明" prop="skuDesc">
          <el-input type="textarea" rows="4" v-model="SkuForm.skuDesc"></el-input>
        </el-form-item>

        <el-form-item label="图片列表" prop="skuImageList">
          <!-- :data="tableData" -->
          <el-table style="width: 100%" border :data="skuImageList" @selection-change="changeSelect" ref="ImageTable"
            :highlight-current-row="true">
            <el-table-column type="selection" width="55" prop="prop">
            </el-table-column>
            <el-table-column label="图片" prop="prop">
              <template slot-scope="{row,$index}">
                <img :src="row.imgUrl" style="width:100px;height:100px" />
              </template>
            </el-table-column>
            <el-table-column label="名称" prop="imgName">
            </el-table-column>
            <el-table-column label="操作" prop="caozuo">
              <template slot-scope="{row,$index}">
                <el-button type="primary" v-if="row.isDefault == 0" @click="changeDefault(row)">设置默认</el-button>
                <el-button v-else>默认</el-button>
              </template>
            </el-table-column>

          </el-table>
        </el-form-item>

        <el-form-item>
          <el-button type="primary" size="medium" @click="saveSku">保存</el-button>
          <el-button size="medium" @click="Cancel">取消</el-button>
        </el-form-item>
      </el-form>

存储的数据

data(){
    //自定义校验--校验图片有没有选择 默认图片表示为1
     var checkimageList = (rule, value, callback) => {
      let result = false; 
      if(this.imageList) {
        //如果没有默认图片,就返回true不放行。有默认图片就返回false放行
        result = this.imageList.every(item => {
          return item.isDefault != 1
        })
      }else{
        //没有选择的情况也是不放行的
        result = true
      }
      
      if (result) {
        callback("还没有选择默认图片哦~")
      }
      callback()
 
      }
    return{

        rules: {
        // 如果是双向绑定的如(input)的prop的名字必须和绑定的元素一样
        skuName: [
          { required: true, message: 'SkuName名称不能为空哦~', trigger: 'blur' },
            ],
        price: [
          { required: true, message: '请输入价格~', trigger: 'blur' },
        ],

        weight: [
          { required: true, message: '请输入重量~', trigger: 'blur' },
        ],
        skuDesc: [
          { required: true, message: '请输入描述~', trigger: 'blur' },
        ],

        // 检查图片是否有选择
        skuImageList: [
          { required: true,validator: checkskuImageList , trigger: 'change' }
        ]
      },

      SkuForm: {
        skuName: '',
        spuId: 0,
        weight: '',
        price: '',
        skuDesc: '',
      },

      //保存图片的
      skuImageList: []
    },
    

}

 this.$refs.SkuForm.validate((valida) => {
        if (valida) {
             //如果以上校验通过,则会返回true
            //执行其他业务
        }
      })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值