el-select的错误提示不生效、el-select验证失灵、el-select的blur规则失灵

  • 发现问题
    在使用el-select进行表单验证的时候,发现点击下拉列表没选的情况下,他不会提示没有选择选项的信息,我设置了rule如下
<!--el-select-->
   <el-form-item  label="等级" prop="level">
  <el-select v-model="editForm.level"  placeholder="请选择级别" auto-complete="off"
                     >
            <el-option label="1级" value="1"></el-option>
            <el-option label="2级" value="2"></el-option>
	 </el-select>
  </el-form-item>
  
js:
  rule{
  	level: [
          {required: true, message: '请选择等级', trigger: 'blur'}
        ]
  }

我的prop和v-model的属性名也是对应的,就是很奇怪,如果鼠标从下拉列表里面移动出来,他不会提示信息,只有在最后面提交表单的时候才会提示。没有达到我的需求。

  • 网上查找方案
    在网上看了很多解决方案,发现很多都没有效果
  1. 将v-model和prop的绑定的属性名改成相同的,我已经做到了,没有用
  2. 将blur改成change,这种方案我刚开始试了,没有效果,后面发现,如果将
return {
      editForm: {
        level: null,
      },

改为

return {
      editForm: {
        level: [],
      },

即将初始值改成一个空列表,就能够实现提示的信息,但是这种方法存在缺陷,就是在初始化的时候,直接就给你提示了,而不是你从el-select里面出来且没选的情况提示。

  • 最终解决方法
  1. 这个rule还是要写,trigger写的是change。
  rule{
  	level: [
          {required: true, message: '请选择等级', trigger: 'change'}
        ]
  }
  1. 在el-select添加方法@blur.capture.native="onBlur('editForm','level')",如下,
    注意要把el-form设置ref="editForm",将ref和model绑定的值作为参数传入,
<el-select v-model="editForm.level"  placeholder="请选择级别" auto-complete="off"
@blur.capture.native="onBlur('editForm','level')"
                     >
  1. 在js中添加方法onBlur
  methods: {
    onBlur(ref,type){
      this.$refs[ref].validateField(type)
    },
}

这样就能解决blur事件不生效的问题了,结果如图,如果没有选择,点到其他地方就会提示
在这里插入图片描述

  • 原理:blur.capture.native 会在子组件上直接绑定原生的 blur 事件,并且在事件触发时会从内层向外层逐级捕获,直到根组件。这样无论点击 el-select 内部的哪个元素导致 blur 事件,都会被捕获到。

相关推荐

  1. 获取el-selectlabel

    2024-03-30 11:10:04       54 阅读
  2. el-select回显

    2024-03-30 11:10:04       66 阅读
  3. 树形el-select封装

    2024-03-30 11:10:04       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-30 11:10:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-30 11:10:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-30 11:10:04       82 阅读
  4. Python语言-面向对象

    2024-03-30 11:10:04       91 阅读

热门阅读

  1. vue2完结

    2024-03-30 11:10:04       30 阅读
  2. pytorch yolov5+Deepsort实现目标检测和跟踪+单目测距

    2024-03-30 11:10:04       44 阅读
  3. LertCode263.丑数

    2024-03-30 11:10:04       39 阅读
  4. Docker部署oracle快捷版

    2024-03-30 11:10:04       38 阅读
  5. ubuntu制作deb安装包

    2024-03-30 11:10:04       47 阅读
  6. Ubuntu20.04彻底删除mysql,并重装mysql

    2024-03-30 11:10:04       35 阅读
  7. 取消svn关联脚本

    2024-03-30 11:10:04       35 阅读
  8. 从SVN迁移到GIT并保留所有的提交记录

    2024-03-30 11:10:04       45 阅读
  9. 【Qt问题】Qt常用快捷键汇总

    2024-03-30 11:10:04       36 阅读
  10. 题目 1414: 最大的字母

    2024-03-30 11:10:04       39 阅读