v-if 导致 elementui 表单校验失效问题解决方案

 更新时间:2024年01月26日 15:15:09   作者:Jiang_JY  
在使用 elementui 表单的过程中,某些表单项需要通过 v-if 来判断是否展示,但是这些表单项出现了检验失效的问题,今天小编给大家介绍v-if 导致 elementui 表单校验失效问题解决方案,感兴趣的朋友一起看看吧

问题

在使用 elementui 表单的过程中,某些表单项需要通过 v-if 来判断是否展示,但是这些表单项出现了检验失效的问题。

解决方法

1、给需要 v-if 判断的表单项添加 key 值

<el-form ref="form" :model="form">
  <el-form-item 
    :key="0" 
    v-if="hasItem" 
    label="名称" 
    prop="type">
    <el-input v-model="form.name"></el-input>
  </el-form-item>
  <el-form-item 
    :key="1" 
    v-if="hasItem" 
    label="类型" 
    prop="type">
    <el-input v-model="form.type"></el-input>
  </el-form-item>
</el-form>

2、将校验规则直接绑定在 el-form-item 上

<el-form ref="form" :model="form">
  <el-form-item 
    :rules="{required: true, message:'请输入名称', trigger: 'change'}"
    v-if="hasItem" 
    label="名称" 
    prop="name">
    <el-input v-model="form.name"></el-input>
  </el-form-item>
  <el-form-item 
    :rules="{required: true, message:'请输入类型', trigger: 'change'}"
    v-if="hasItem" 
    label="类型" 
    prop="type">
    <el-input v-model="form.type"></el-input>
  </el-form-item>
</el-form>

3、v-show 代替 v-if

这种方法存在一个问题,就是如果 v-if 判断的表单项中如果存在相同字段的项就会导致重复校验的问题,所以这种方法需要在判断的表单项字段都不相同的情况下使用。

<el-form ref="form" :model="form">
  <el-form-item 
    v-show="hasItem" 
    label="名称" 
    prop="name">
    <el-input v-model="form.name"></el-input>
  </el-form-item>
  <el-form-item 
    v-show="hasItem" 
    label="类型" 
    prop="type">
    <el-input v-model="form.type"></el-input>
  </el-form-item>
</el-form>

4、使用自定义校验规则

<el-form ref="form" :model="form">
  <el-form-item 
    :key="0" 
    v-if="hasItem" 
    label="名称" 
    prop="name">
    <el-input v-model="form.name"></el-input>
  </el-form-item>
  <el-form-item 
    :key="1" 
    v-if="hasItem" 
    label="类型" 
    prop="type">
    <el-input v-model="form.type"></el-input>
  </el-form-item>
</el-form>
const checkName = (rule, value, callback) => {
	if (!value) {
       return callback(new Error('名称不能为空'));
   }
}
data(){
	return{
		rules: {
   			name: [
            	{ validator: checkName , trigger: 'change' }
          	],
        }
	}
}

到此这篇关于v-if 导致 elementui 表单校验失效问题解决的文章就介绍到这了,更多相关elementui 表单校验失效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 谈谈VUE种methods watch和compute的区别和联系

    谈谈VUE种methods watch和compute的区别和联系

    本篇文章主要介绍了谈谈VUE种methods watch和compute的区别和联系,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08
  • 优雅的elementUI table单元格可编辑实现方法详解

    优雅的elementUI table单元格可编辑实现方法详解

    这篇文章主要介绍了优雅的elementUI table单元格可编辑实现方法详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • vue给input file绑定函数获取当前上传的对象完美实现方法

    vue给input file绑定函数获取当前上传的对象完美实现方法

    这篇文章主要介绍了vue给input file绑定函数获取当前上传的对象完美实现方法,需要的朋友可以参考下
    2017-12-12
  • vue 条件渲染v-if和v-show

    vue 条件渲染v-if和v-show

    这篇文章主要介绍了vue 条件渲染v-if和v-show,在模板中,可以根据条件进行渲染。条件用到的是v-if、v-else-if以及v-else来组合实现的,有时候我们想要在一个条件中加载多个html元素,那么我们可以通过template元素上实现,下面就来看看具体实现吧
    2021-10-10
  • vue实现点击导航栏滚动页面到指定位置的功能(推荐)

    vue实现点击导航栏滚动页面到指定位置的功能(推荐)

    这篇文章主要介绍了vue实现点击导航栏滚动页面到指定位置的功能(推荐),步骤一是是通过获取不同板块的滚轮高度,步骤二通过编写执行滚动操作的函数,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Vue事件获取事件对象之event.currentTarget详解

    Vue事件获取事件对象之event.currentTarget详解

    这篇文章主要介绍了Vue事件获取事件对象之event.currentTarget,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • vue实现左右点击滚动效果

    vue实现左右点击滚动效果

    这篇文章主要为大家详细介绍了vue实现左右点击滚动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 使用vue实现点击按钮滑出面板的实现代码

    使用vue实现点击按钮滑出面板的实现代码

    这篇文章主要介绍了使用vue实现点击按钮滑出面板的实现代码,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-01-01
  • vue.js云存储实现图片上传功能

    vue.js云存储实现图片上传功能

    示对象存储是腾讯云提供的一种存储海量文件的分布式存储服务,本文主要介绍了用vue.js实现图片上传功能,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • VUE2语法中$refs和ref属性的使用方式

    VUE2语法中$refs和ref属性的使用方式

    在Vue中如何使用$refs和ref属性来操作DOM和组件实例,$refs是一个对象,包含由ref属性注册的DOM元素和组件实例,通过$refs可以在Vue中获取DOM节点、组件实例、组件数据和属性等
    2025-10-10

最新评论