Vue form-item select option 自定义校验

Vue 下拉框校验,判断如果选择的是默认第一个下拉框,则提示用户选择下拉框中的选项。在校验的时候有如下问题记录。

一、正确自定义校验下拉框源码如下

<template>
  <el-card class="form-container" shadow="never">
    <el-form :model="secondTitle" :rules="rules" ref="secondTitleFrom" label-width="150px">
      <el-form-item label="上级标题:" prop="firstTitleId">
        <el-select v-model="secondTitle.firstTitleId" placeholder="请选择活动区域">
          <el-option
            v-for="item in selectFirstTitleList"
            :key="item.id"
            :label="item.name"
            :value="item.id"
          ></el-option>
        </el-select>
      </el-form-item>
    </el-form>
  </el-card>
</template>

export default {
  data() {

    //自定义下拉框校验函数
    const isSelect = (rule, value, callback) => {
      if (value == 0) { //如果值是 0,提示用户选择正确的选项
        return callback(new Error("请正确选择一级标题"));
      } else {
        callback();
      }
    };

    return {
      rules: {
        firstTitleId: [{ required: true, trigger: "change", validator: isSelect }]
      }
    };
  }
}

二、此处有以下几点需要注意

1.<el-form> 标签中的 :rules="rules" 值 rules 一定要与 return 中的 rules 值一致。可以起其它名称,但要保证名称完全相同。

2.<el-form-item> 标签中的 prop="firstTitleId" 值 firstTitleId 一定要与 <el-select> 标签中的 v-model="secondTitle.firstTitleId" 最后一个属性值一致。并且与 return 下 rules 中的 firstTitleId 名称一致。记住这三处的名称一定要完全一样,否则自定义校验函数中的 value 值是 undefined。

3.自定义检验函数中的 value 值最终拿到的是 <el-option> 标签中的 :value 值,此处我的 :value 值是 Number 类型,网上说有 Number 类型拿不到值的情况,在检验属性中添加 type:"number" 类型说明。我没有添加也可以正确使用,如果有问题可以添加如下代码试试:

return {
      rules: {
        firstTitleId: [{ type: "number", required: true, trigger: "change", validator: isSelect }]
      }
    };

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值