el-form表单验证的一些实用方法总结

 更新时间:2023年01月04日 10:26:08   作者:jiahao778  
表单校验是注册环节中必不可少的操作,表单校验通过一定的规则来确保用户提交数据的有效性,下面这篇文章主要给大家介绍了关于el-form表单验证的一些实用方法,需要的朋友可以参考下

前言

Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可。

前置知识点

  • 根据文档说明,model为表单的数据对象,el-form通过model绑定数据。
  • reles为表单验证规则对象,其中字段名要与model中的字段名一一对应
  • el-form-item 容器,通过 label 绑定标签,prop属性设置为需要验证的字段名
  • 表单组件通过 v-model 绑定 model 中的数据

表单校验相关属性

  • hide-required-asterisk:是否隐藏必填字段的标签旁边的红色星号(隐藏必录标识)
  • inline-message:是否以行内形式展示校验信息(验证消息是否在一行显示)

方式一(无表单嵌套)

以一般的form表单为例:

<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" 
class="demo-ruleForm">
    <el-form-item label="活动名称" prop="name"> 
        <el-input v-model="ruleForm.name"></el-input> 
    </el-form-item>
<el-form>

一般在vue中这样来写,就可以对表单进行验证。

data(){
    return {
        ruleForm: { name: '' },
        rules: {
            name: [ 
                { required: true, message: '请输入活动名称', trigger: 'blur' }, 
                { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' } 
            ]
        }
    }
},

如果有一些复杂的验证规则,也可以选择自定义验证, validator

data() {
 const userValidator = (rule, value, callback) => {
    if (value.length > 3) {
      callback()
    } else {
      callback(new Error('用户名长度必须大于3'))
    }
  }
  return {}
}
rules: {
      user: [
        { validator: userValidator, trigger: 'change' }
      ]
    }

方式二(表单嵌套)

嵌套的表单,一般业务场景是,有一些表单项需要按照条件显示或者隐藏,data里面的model数据可能会是对象里面套对象的,el-form也同样支持嵌套的验证,写法一般如下:

<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" 
class="demo-ruleForm">
    <el-form-item label="活动名称"> 
        <el-input v-model="ruleForm.name"></el-input>
        <el-form-item prop="info.name"> 
            <el-input v-model="ruleForm1.info.name"></el-input>

        </el-form-item>
    </el-form-item>
<el-form>

data(){
    return {
           ruleForm: {
                info: {
                    name: ''
                }
            },
    }
}

rules里面同样也可以这样写

rules: {
      info: {
          name: [{ required: true, message: '请选择', trigger: 'change' }],
      }
    }

方式三(动态表单验证)

除了在 Form 组件上一次性传递所有的验证规则外还可以在单个的表单域上传递属性的验证规则.

动态添加form-item的时候,可以使用

<el-form-item prop="email" label="邮箱" :rules="[ { required: true, message: '请输入邮箱地址', trigger: 'blur' }, { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] } ]" > <el-input v-model="dynamicValidateForm.email"></el-input> </el-form-item>

方式四(动态添加校验规则)

根据条件判断是否需要某种验证规则时,一个简单的使用场景就是,通过不同的type去显示不同的错误信息。

const message =
      this.type === 'addFirst'
        ? '请输入一级名称'
        : this.type === 'addChild'
        ? '请输入二级名称'
        : this.type === 'addThree' && this.editChannelItem
        ? '请选择三级名称'
        : '请输入三级名称';
    const validatorHandle = (rule, value, callback) => {
      if (value) {
        callback();
      } else {
        callback(new Error(message));
      }
    };
    const newRule = [...this.formInfoRules.name, { validator: validatorHandle, trigger: 'blur' }];
    this.formInfoRules = Object.assign({}, this.formInfoRules, { name: newRule });

方式五(手动控制校验状态)

error错误信息

validate-status验证状态。 success 验证成功, error验证失败, validating验证中,''未验证
这样使用:

<el-form-item
           
                :error="validateFormState.error"
                :validate-status="validateFormState.state"
              >
            </el-form-item>
            
  validateFormState = {
    periodSendDateError: '',
    periodSendDateStatus: 'success',
  };
  在验证成功或者失败的时候去手动控制error和validate-status的值即可。

总结

到此这篇关于el-form表单验证的一些实用方法总结的文章就介绍到这了,更多相关el-form表单验证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 5个可以加速开发的VueUse函数库(小结)

    5个可以加速开发的VueUse函数库(小结)

    VueUse为Vue开发人员提供了大量适用于Vue2和Vue3的基本Composition API 实用程序函数。具有一定的参考价值,感兴趣的可以了解一下
    2021-11-11
  • Vue3项目中配置TypeScript和JavaScript的兼容

    Vue3项目中配置TypeScript和JavaScript的兼容

    在Vue3开发中,常见的使用JavaScript(JS)编写代码,但也会有调整编写语言使用TypeScript(TS)的需求,因此,在Vue3项目设置中兼容TS和JS是刻不容缓的重要任务,
    2023-08-08
  • vue的keep-alive用法技巧

    vue的keep-alive用法技巧

    在本篇文章里小编给大家整理的是关于vue的keep-alive用法技巧以及实例代码,需要的朋友们学习下。
    2019-08-08
  • axios的拦截请求与响应方法

    axios的拦截请求与响应方法

    今天小编就为大家分享一篇axios的拦截请求与响应方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • vue项目中使用高德地图的超详细步骤

    vue项目中使用高德地图的超详细步骤

    在vue项目中添加高德地图,对开发地图的开发人员有一定帮助,下面这篇文章主要给大家介绍了关于vue项目中使用高德地图的超详细步骤,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • vue实现自定义多选按钮

    vue实现自定义多选按钮

    这篇文章主要为大家详细介绍了vue实现自定义多选按钮,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • Vue实现页面的局部刷新(router-view页面刷新)

    Vue实现页面的局部刷新(router-view页面刷新)

    本文主要介绍了Vue实现页面的局部刷新(router-view页面刷新),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 关闭Vue计算属性自带的缓存功能方法

    关闭Vue计算属性自带的缓存功能方法

    下面小编就为大家分享一篇关闭Vue计算属性自带的缓存功能方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue实现ToDoList简单实例

    vue实现ToDoList简单实例

    这篇文章主要为大家详细介绍了vue实现ToDoList简单实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • vue自定义组件实现v-model双向绑定数据的实例代码

    vue自定义组件实现v-model双向绑定数据的实例代码

    vue中父子组件通信,都是单项的,直接在子组件中修改prop传的值vue也会给出一个警告,接下来就用一个小列子一步一步实现了vue自定义的组件实现v-model双向绑定,需要的朋友可以参考下
    2021-10-10

最新评论