【vue2】使用elementUI进行表单验证实操(附源码)

简介: 使用elementUI进行表单验证实操

【前言】我们在构建一个项目中,基本是无法避免不使用表单来收集数据的。比如登录注册页面,我们需要验证输入者的用户名与密码当都具有合法性与正确性的时候我们才可以进行注册以及登录的操作。当登录进页面之后,还会涉及到数据的增删改查操作,这都无一例外需要我们通过某一个载体来接收我们的数值,因此表单在项目中是很常见的,大家物必得学会呦。

一、表单校验流程发请求流程

收集数据、进行验证、处理验证通过与错误

二、使用elementUI框架进行表单校验

关于vue的UI库介绍的文章大家请移步下面这个超链接:

UI与Vant组件库的导入、注册、使用方法

2.1.我们使用表单组件来讲解,翻阅文档看表单怎么用

组件 | Element

我们重点放在这样的几个点上面:model、rules、validate、prop、ref

model:用于绑定表单数据

rules:用于表单验证规则

validate:任一表单项被校验后触发(被校验的表单项 prop 值,校验是否通过)

prop:表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的

ref用于选中我们的form表单

此刻我们的表单长这个样子

c0eb57501e894ea4b64ae3dd4880e47a.png

此时关键源码截图:

0dae44e8f05e47b186ce4c7c1051ec88.png

2.2给每个通过prop进行绑定下props,我们才能开启校验规则

类似于下图这样:绑定我们的数据进去

3583260d5ab04eb0919f0ad8a52cc101.png

2.3写下我们的rules校验规则

c6b90b5cc1ae472b904d8e932d958f1a.png

2.4rules校验写在data当中

required:必选项,message:错误提示,trigger:触发方式(blur是失去焦点的时候触发)

d71c694a620844e698cba01653e0b4f7.png

当我写下校验规则之后,我们的图标发现有了新的变化。左上角有了红色星号

2f426837d5794ab8ba779e564f42a65d.png

那我们来测试以下吧!

0010163df44344039c19d141ca4f79a9.gif

现在表单的一层数据校验就完成了,接下还需要一层兜底校验。这一层校验是收集所有表单数据进行检测,当检测都通过了再执行相应的规则。在这就是当我点击 立即创建 的时候收集数据我们进行其他操作,比如发请求到服务器中,这里为了演示的难度就不写发送请求的操作啦。发送ajax请求的文章请看博主vue专栏喔

2.5绑定点击事件

<el-button type="primary" @click="onSubmit">立即创建</el-button>

2.6写下校验方法

onSubmit () {
      this.$refs.form.validate(valid => {
        console.log(valid)
        if (valid) {
          console.log('submit!,校验通过')
          console.log('这是FormData:', this.FormData)
        }
      })
    }

2.7点击查看

1df42014b3d94ac9b3dd3896302545a1.png

嘿,可以看到当我们校验通过了,valid形参打印的true,因此我们才获取到了我们想看到的值。当我们表单数据但凡有一个有错误时,都不能走这个if为true的条件,这样就完成了兜底校验。一般这个表单是那里用?一般是登陆页面用或者我们后管系统做增删改查操作的时候会使用上表单验证等技术。等验证通过了我们再去发请求或者存储数据等等操作。

【附上源码】

<template>
<el-form ref="form" :model="FormData" label-width="80px" :rules="ruleForm">
  <el-form-item label="活动名称" prop="name">
    <el-input v-model="FormData.name"></el-input>
  </el-form-item>
  <el-form-item label="活动时间" prop="date1">
    <el-col :span="11">
      <el-date-picker type="date" placeholder="选择日期" v-model="FormData.date1" style="width: 100%;"></el-date-picker>
    </el-col>
    <el-col class="line" :span="2">-</el-col>
  </el-form-item>
  <el-form-item label="活动性质" prop="type">
    <el-checkbox-group v-model="FormData.type"  prop="type">
      <el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>
      <el-checkbox label="地推活动" name="type"></el-checkbox>
      <el-checkbox label="线下主题活动" name="type"></el-checkbox>
      <el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>
    </el-checkbox-group>
  </el-form-item>
  <el-form-item label="活动形式" prop="desc">
    <el-input type="textarea" v-model="FormData.desc" prop="desc"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="onSubmit">立即创建</el-button>
  </el-form-item>
</el-form>
</template>
<script>
export default {
  data () {
    return {
      ruleForm: {
        name: [
          { required: true, message: '请输入活动名称', trigger: 'blur' },
          { min: 2, max: 50, message: '活动名称字数为2-50个字', trigger: 'blur' }
        ],
        date1: [
          { required: true, message: '请选择活动事件', trigger: 'blur' }
        ],
        type: [
          { required: true, message: '请确定活动活动性质', trigger: 'blur' }
        ],
        desc: [
          { required: true, message: '活动形式', trigger: 'blur' }
        ]
      },
      FormData: {
        // 一定需要在data中声明我们绑定的数据
        name: '',
        date1: '',
        type: [],
        desc: ''
      }
    }
  },
  methods: {
    onSubmit () {
      this.$refs.form.validate(valid => {
        console.log(valid)
        if (valid) {
          console.log('submit!,校验通过')
          console.log('这是FormData:', this.FormData)
        }
      })
    }
  }
}
</script>
相关文章
|
6月前
|
前端开发 Java 关系型数据库
手办商城系统|Springboot+vue+ElementUI手办商城系统
手办商城系统|Springboot+vue+ElementUI手办商城系统
117 0
|
6月前
|
数据采集 前端开发 安全
基于Springboot+Vue+ElementUI实现疫情社区管理系统
基于Springboot+Vue+ElementUI实现疫情社区管理系统
|
1月前
vue3+Ts 二次封装ElementUI form表单
【10月更文挑战第8天】
190 59
|
29天前
|
JavaScript UED
Vue + ElementUI 实现动态添加和删除表单项的多层嵌套表单
【10月更文挑战第5天】本示例展示了如何在 Vue.js 中使用 Element UI 组件实现动态添加和删除嵌套表单项。该表单包含设备信息、设备部位及其对应的任务列表,支持用户动态添加设备部位和任务,并提供相应的表单验证规则。
118 0
Vue + ElementUI 实现动态添加和删除表单项的多层嵌套表单
|
1月前
|
JavaScript 前端开发
vue尚品汇商城项目-day06【vue插件-42.支付页面中使用ElementUI以及按需引入】
vue尚品汇商城项目-day06【vue插件-42.支付页面中使用ElementUI以及按需引入】
26 0
|
6月前
|
JavaScript 开发者 UED
Vue入门到关门之第三方框架elementui
ElementUI是一个基于Vue.js的组件库,包含丰富的UI组件如按钮、表格,强调易用性、响应式设计和可自定义主题。适用于快速构建现代化Web应用。官网:[Element.eleme.cn](https://element.eleme.cn/#/zh-CN)。安装使用时,需在项目中导入ElementUI和其样式文件。
62 0
|
3月前
|
JavaScript
基于Vue2+ElementUI/Vue3+ElementPlus对el-notification增加倒计时进度条特效,鼠标移入,暂停计时,鼠标移出,继续计时
本文介绍了如何在Vue2+ElementUI和Vue3+ElementPlus项目中对`el-notification`组件增加倒计时进度条特效,并实现鼠标移入通知时暂停计时,鼠标移出时继续计时的功能。
92 0
基于Vue2+ElementUI/Vue3+ElementPlus对el-notification增加倒计时进度条特效,鼠标移入,暂停计时,鼠标移出,继续计时
|
3月前
|
JavaScript 前端开发 数据库
vue+elementUi实现将数字转化为 对应的字符串内容
该博客文章介绍了如何在Vue框架结合Element UI组件库中,将数字状态字段转换为具体的字符串描述,并通过`el-table-column`展示在表格中。
vue+elementUi实现将数字转化为 对应的字符串内容
|
3月前
|
JavaScript
在vue中引入elementui
这篇文章介绍了如何在Vue项目中引入Element UI库,包括使用npm安装Element UI、在main.js文件中引入并注册,以及如何调用Element UI的组件。
|
5月前
|
分布式计算 资源调度 JavaScript
程序员必知:vue项目创建和启动、ElementUI的安装和快速学习
程序员必知:vue项目创建和启动、ElementUI的安装和快速学习
70 0