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

news2025/7/7 10:43:36

1d43f75f092a4050a8ce31e2d85f6868.gif

🥳博       主:初映CY的前说(前端领域)

🌞个人信条:想要变成得到,中间还有做到!

🤘本文核心:vue使用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表单

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

此时关键源码截图:

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

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

 2.3写下我们的rules校验规则

2.4rules校验写在data当中

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

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

那我们来测试以下吧!

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

 嘿,可以看到当我们校验通过了,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>

至此本文结束,学的开心!

——期待大家的关注与支持! 你的肯定是我更新的最大动力——

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/407161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VUE 使用 vue create 命令 创建 vue2.0 项目

为了保证创建过程中避免出现因权限不足的原因 从而 导致创建失败的问题&#xff0c;我们使用 管理员身份 打开命令行 第一步&#xff0c;打开命令行后&#xff0c;首先进入我们想要创建项目的目录下 g: 表示切换进入G盘 cd git 表示打开 当前盘下的 git 文件夹 大家可以根据以上…

如何解决 npm 安装依赖报错 ERESOLVE unable to resolve dependency tree

现代前端项目开发中依赖管理已经是不可或缺的一环&#xff0c;然后由于各种问题&#xff0c;如历史原因、项目缺少维护等&#xff0c;前端项目在依赖管理中会遇到非常多的问题。本篇文章讨论其中一种&#xff0c;当 npm install 时遇到报错 ERESOLVE unable to resolve depende…

百度文心一言对标 ChatGPT,你怎么看?

文心一言 VS ChatGPT接受不完美 期待进步里程碑意义文心一言初体验✔ 文学创作✔ 商业文案创作✔ 数理逻辑推算✔ 中文理解✔ 多模态生成写在最后何为文心&#xff1f;“文”就是我们中华语言文字中的文&#xff0c;“心”是希望该语言模型可以用心的去理解语言&#xff0c;用心…

手把手教你基于HTML、CSS搭建我的相册(上)

The sand accumulates to form a pagoda写在前面HTML是什么&#xff1f;CSS是什么&#xff1f;demo搭建写在最后写在前面 其实有过一些粉丝咨询前端该从什么开始学&#xff0c;那当然是我们的前端基础三件套开始学起&#xff0c;HTML、CSS、javaScript&#xff0c;前端的大部分…

pnpm学习

1、pnpm是什么&#xff1f; 现代的包管理工具 pnpm&#xff08; performant npm &#xff09;&#xff0c;意思是高性能的 npm 它由 npm/yarn 衍生而来&#xff0c;但却解决了 npm/yarn 内部潜在的 bug&#xff0c;并且极大了地优化了性能 2、特性概览 &#xff08;1&#x…

前端小技巧

1.html 1.1 网站自动刷新 应用场景&#xff1a; 网页定期自动刷新&#xff08;现在基本淘汰了&#xff0c;采用ajax&#xff09;&#xff1b;自动跳转到指定页面&#xff0c;这个自动跳转的好处就是不需要JS调用&#xff0c;属于纯html网页自动跳转 v7-网站自动刷新 你可以…

【uni-app】小程序实现微信授权登陆(附流程图)

微信授权登陆是比较常见的一种登陆方式&#xff0c;今天来总结下实现流程 进入授权登陆页面 初始化调用wx.login获取登陆凭证code&#xff08;用户无感知&#xff09; //封装微信获取用户code&#xff0c;避免嵌套 login() {return new Promise((resolve, reject) > {uni.l…

基于Vue+Less+axios封装+ElementUI搭建项目底层支撑实战

目录 一、本节介绍和上节回顾 1. 上节介绍 2. Vue SpringBoot前后端分离项目实战目录 3. 本节介绍 二、项目前置所需应用安装 1. Less的安装 2. Less安装后的验证 3. axios的安装 4. axios请求的封装与拆解 5. axios请求封装后的验证 6. ElementUI的安装、验证 …

闭包是什么?五分钟带你了解闭包

闭包 前言 闭包对每个前端来说都是一个绕不开的话题。学习之初也因为搞清闭包的概念耗费了不少精力&#xff0c;今天写一篇博客来记录本人对闭包的理解&#xff0c;笔者水平有限&#xff0c;若有疏漏及错误&#xff0c;愿不吝赐教。 什么是闭包&#xff1f; 你可以在一个函…

创建vue2项目

如何创建一个vue2项目 &#xff08;1&#xff09; 使用cmd终端直接创建 在键盘上winr&#xff0c;输入cmd打开终端窗口&#xff0c;cd进入到vue项目所创建的目录里&#xff08;我是直接创建在桌面上&#xff09; 输入创建项目指令&#xff08;vue create 项目名称&#xff09;…

走进Vue【一】初识Vue

文章目录&#x1f31f;前言&#x1f31f;MVVM模式&#x1f31f;Vue简介&#x1f31f;Vue重要版本发布&#x1f31f;Vue特点&#x1f31f;快速上手Vue&#x1f31f;Hello Vue&#x1f31f;Vue实例&#x1f31f;写在最后&#x1f31f;前言 从历史的潮流来说&#xff0c;人们从之…

Promise.all的使用

Promise的基本使用Promise.all() 传参和返回结果Promise.all() 完成状态Promise.all() 失败状态Promise.all() 使用案例Promise.all() 传参和返回结果 Promise.all() 传入一个promise的数组&#xff0c;并返回一个Promise实例&#xff0c;传入数组中的promise返回的 resolve 回…

探究前端的跑马灯效果是如何用css实现的

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;…

学习 Python 之 Pygame 开发魂斗罗(十二)

学习 Python 之 Pygame 开发魂斗罗&#xff08;十二&#xff09;继续编写魂斗罗1. 修改玩家扣减生命值2. 解决玩家下蹲子弹不会击中玩家而是直接让玩家死亡的问题3. 完善地图4. 增加产生敌人函数&#xff0c;解决一直产生敌人的问题5. 给玩家类增加计算玩家中心的方法继续编写魂…

软件行业的最后十年【ChatGPT】

在这篇文章中&#xff0c;我将说明像 ChatGPT 这样的生成式人工智能 (GAI) 将如何在十年内取代软件工程师。 预测被离散化为 5 个阶段&#xff0c;总体轨迹趋向于完全接管。 但首先&#xff0c;一个简短的前言。 推荐&#xff1a;用 NSDT场景设计器 快速搭建3D场景。 1、关于AI…

ChatGPT-4.0 : 未来已来,你来不来

文章目录前言ChatGPT 3.5 介绍ChatGPT 4.0 介绍ChatGPT -4出逃计划&#xff01;我们应如何看待ChatGPT前言 好久没有更新过技术文章了&#xff0c;这个周末听说了一个非常火的技术ChatGPT 4.0&#xff0c;于是在闲暇之余我也进行了测试&#xff0c;今天这篇文章就给大家介绍一…

七夕节,我用代码制作了表白信封

大家好&#xff0c;我是小周&#xff0c;明天就是七夕了&#xff0c;这么浪漫的节日&#xff0c;自然少不了我这个浪漫博主&#xff0c;本次为大家贡献表白信封的制作&#xff0c;其他的就看缘分啦&#xff0c;哈哈&#xff0c;最后会放上资源包&#xff0c;需要的小伙伴自取就…

Nginx反向代理WebSocket服务连接报错:WebSocket connection to “wss://xxx/xxx“ failed

最近使用 node.js 搭建 WebSocket 服务&#xff0c;在本地测试 connection 都是正常&#xff0c;于是部署到 Linux 服务上&#xff0c;需要用 Nginx 来反向代理 WebSocket 服务。浏览器控制台报错&#xff1a;WebSocket connection to wss://tiven.cn/ws/xxx failed:&#xff0…

学会iframe并用其解决跨域问题

了解iframe 官方定义为&#xff1a;iframe是HTML标签&#xff0c;作用是文档中的文档&#xff0c;或者浮动的框架(FRAME)。iframe元素会创建包含另外一个文档的内联框架&#xff08;即行内框架&#xff09;。 简单理解为&#xff1a;iframe是一个内联框架&#xff0c;可以在当…

ES6 --- 解构赋值(数组,对象,函数)使用详解

解构赋值 JavaScript 中最常用的两种数据结构是 Object 和 Array。 对象让我们能够创建通过键来存储数据项的单个实体。数组则让我们能够将数据收集到一个有序的集合中。 但是&#xff0c;当我们把它们传递给函数时&#xff0c;函数可能不需要整个对象/数组。它可能只需要对…