el-select multiple表单校验问题

记录一个el-select复选框表单校验例子

1、一打开页面就会触发校验

解决方案:设置初始值为空数组

2、选中下拉数据,不会再次触发校验,导致提示文字一直存在

解决这个问题,首先先看看v-model 、prop属性、rules校验是否正确,这里注意el-select的rules校验的trigger应该是change。

如果以上都没问题,那么还有一个原因就是:嵌套太深,导致form检测不到ruleForm的变化

解决方案:

javascript 复制代码
 // 我这里用的是
      vulTypeChange() {
        this.form = { ...this.form }
      },

3、完没解决思路

1)添加form表单:rule方式验证

html 复制代码
<el-form ref="form" :model="form" :rules="rules" label-width="80px" style="margin-bottom: 20px">
        
        <el-row>
          <el-col :span="12">
            <el-form-item label="接收人" prop="receivers">
              <el-select v-model="form.receivers" placeholder="请选择接收人" filterable multiple clearable style="width: 100%" :disabled="this.disabled"
                >
                <el-option v-for="item in users" :key="item.userName" :label="item.nickName" :value="item.userName" />
              </el-select>
            </el-form-item>
          </el-col>
          
        </el-row>

      </el-form>
javascript 复制代码
rules: {
          
          receivers: [
            { required: true, validator: picValidator, trigger: 'change' },
          ]
         
        },

注意rule中验证方式应该是"change"

2)给下拉框添加change函数

html 复制代码
<el-form ref="form" :model="form" :rules="rules" label-width="80px" style="margin-bottom: 20px">
        
        <el-row>
          <el-col :span="12">
            <el-form-item label="接收人" prop="receivers">
              <el-select v-model="form.receivers" placeholder="请选择接收人" filterable multiple clearable style="width: 100%" :disabled="this.disabled"
                @change='vulTypeChange'>
                <el-option v-for="item in users" :key="item.userName" :label="item.nickName" :value="item.userName" />
              </el-select>
            </el-form-item>
          </el-col>
          
        </el-row>

      </el-form>

@change='vulTypeChange'

javascript 复制代码
vulTypeChange() {
        this.form = { ...this.form }
      },

3)自定义校验方法

javascript 复制代码
 data() {
      // 自定义验证规则
      var picValidator = (rule, value, callback) => {
        if (!this.form.receivers.length) {
          // 一定要写 callBack() 验证完成时调用的回调函数 https://github.com/yiminghe/async-validator
          callback(new Error('请至少选择一个接收人'))
        } else {
          callback()
        }
      }
      return {
。。。。

至此,完美解决el-select复选框表单校验

相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
A黄俊辉A3 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄3 天前
JavaScript 隐式全局变量解析
javascript
honkun63 天前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
kybs19913 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net