Vue之ElementUI Form表单校验

 更新时间:2021年08月24日 10:57:26   作者:前端菜鸟-AllenYe  
这篇文章主要为大家详细介绍了Vue之ElementUI Form表单校验,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

表单校验是前端开发过程中最常用到的功能之一,根据个人的工作经验总结在此对表单校验功能的基础用法进行整理说明。

以下是form的demo

el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px" class="demo-dynamic">
  <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>
  <el-form-item
    v-for="(domain, index) in dynamicValidateForm.domains"
    :label="'域名' + index"
    :key="domain.key"
    :prop="'domains.' + index + '.value'"
    :rules="{
      required: true, message: '域名不能为空', trigger: 'blur'
    }"
  >
    <el-input v-model="domain.value"></el-input><el-button @click.prevent="removeDomain(domain)">删除</el-button>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button>
    <el-button @click="addDomain">新增域名</el-button>
    <el-button @click="resetForm('dynamicValidateForm')">重置</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        dynamicValidateForm: {
          domains: [{
            value: ''
          }],
          email: ''
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      },
      removeDomain(item) {
        var index = this.dynamicValidateForm.domains.indexOf(item)
        if (index !== -1) {
          this.dynamicValidateForm.domains.splice(index, 1)
        }
      },
      addDomain() {
        this.dynamicValidateForm.domains.push({
          value: '',
          key: Date.now()
        });
      }
    }
  }
</script>

首先对el-form标签中的几个关键属性进行说明

  • ref: 当前表单的唯一标识
  • model: 表单绑定的对象
  • rules: 字段校验规则

rules字段用来定义各个字段具体的校验规则,用法请查阅开篇的demo示例,其中required标识字段是否必填,message为校验提示语,trigger为单个校验触发方式;也可以通过validator字段自定义校验规则,方法validateProductName中对商品名称做了判空及长度校验,需要注意的是所有的条件分支都要做callback处理,否则校验可能会导致异常。

1、重置表单

调用表单重置方法this.$refs.dynamicValidateForm.resetFields()实现。

当然像datetimerange类型的日期控件是无法通过该方法进行重置,必须手动重置绑定的字段。

2、 清除校验提示语

调用方法this.$refs.dynamicValidateForm.clearValidate()实现。

如果仅需要清除单个控件的提示语,只要把该控件对应的prop属性值作为参数传入即可。

还有另外一种方式就是在该控件对应的el-form-item标签中增加ref属性值,然后调用clearValidate方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • vue+antv实现雷达图的示例代码

    vue+antv实现雷达图的示例代码

    这篇文章主要介绍了vue+antv实现雷达图,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Vue发布项目实例讲解

    Vue发布项目实例讲解

    在本篇文章里小编给各位分享的是关于Vue发布项目的实例内容以及知识点讲解,需要的朋友们参考下。
    2019-07-07
  • 如何修改element-ui中tree组件的icon图标(小白都会的前端技能)

    如何修改element-ui中tree组件的icon图标(小白都会的前端技能)

    这篇文章主要给大家介绍了关于如何修改element-ui中tree组件的icon图标的相关资料,本文介绍的是小白都会的前端技能,文中通过代码以及图文介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • vue前端实现dhtmlxgantt甘特图代码示例(个人需求)

    vue前端实现dhtmlxgantt甘特图代码示例(个人需求)

    这篇文章主要介绍了如何使用dhtmlx-gantt和chinese-days插件在项目中实现节假日置灰显示的功能,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • vue-cli如何关闭Uncaught error的全屏提示

    vue-cli如何关闭Uncaught error的全屏提示

    这篇文章主要介绍了vue-cli如何关闭Uncaught error的全屏提示问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • vite项目如何集成eslint和prettier

    vite项目如何集成eslint和prettier

    这篇文章主要介绍了vite项目如何集成eslint和prettier问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Vue2 监听属性改变watch的实例代码

    Vue2 监听属性改变watch的实例代码

    今天小编就为大家分享一篇Vue2 监听属性改变watch的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • vite+vue3+ts项目中提示无法找到模块的问题及解决

    vite+vue3+ts项目中提示无法找到模块的问题及解决

    这篇文章主要介绍了vite+vue3+ts项目中提示无法找到模块的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • vue项目如何设置全局字体样式font-family

    vue项目如何设置全局字体样式font-family

    这篇文章主要介绍了vue项目如何设置全局字体样式font-family问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Vue父子组件属性传递实现方法详解

    Vue父子组件属性传递实现方法详解

    这篇文章主要介绍了Vue父子组件属性传递实现方法,我们主要从案例出发,用Vue3的写法写父子组件之间的属性传递,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02

最新评论