Vue form-item select option 自定义校验

Posted Eli Shaw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 ]
      
    ;

 

以上是关于Vue form-item select option 自定义校验的主要内容,如果未能解决你的问题,请参考以下文章

vue中怎么设置select默认选中

ant-design-vue之form源码解读

特定自定义 Vue 组件的方法

v-if案例解析(element-ui form-item表单无法验证问题剖析 )

TP3.2模板 select选项采坑

有没有办法通过更改 v-model 来更改 Select2 选项?