Vue编写登录注册页面前端校验

登录注册校验

template页面

 <div class="app-login">
    <!--登录  -->
    <div class="form">
      <el-form ref="form" size="large" autocomplete="off" v-if="isLogin" :model="registerData" :rules="rules"
        label-width="120px">
        <el-form-item>
          <h1>登录</h1>
        </el-form-item>
        <el-form-item label="用户名" prop="username">
          <el-input :suffix-icon="Wicon" maxlength="5" :prefix-icon="User"  v-model="registerData.username" type="username" autocomplete="off" />
        </el-form-item>
        <el-form-item label="密码" prop="password">
          <el-input :suffix-icon="Wicon2" maxlength="8" :prefix-icon="Lock" show-password v-model="registerData.password" type="password" autocomplete="off" />
        </el-form-item>
        <div class="bt">
          <el-form-item>
            <el-button type="primary" @click="submitForm(ruleFormRef)">登录</el-button>
            <el-button @click="resetForm()">重置</el-button>
            <el-button @click="isLogin = false">去注册</el-button>
          </el-form-item>
        </div>
      </el-form>
      <!--注册  -->
      <el-form ref="form" size="large" autocomplete="off" v-else :model="registerData" :rules="rules" label-width="120px">
        <el-form-item>
          <h1>注册</h1>
        </el-form-item>
        <el-form-item label="账户" prop="username">
          <el-input :prefix-icon="User" maxlength="5" :suffix-icon="Wicon" v-model="registerData.username" type="username"
            autocomplete="off" />
        </el-form-item>
        <el-form-item label="密码" prop="password">
          <el-input :prefix-icon="Lock" :suffix-icon="Wicon2"  maxlength="8" show-password v-model="registerData.password" type="password"
            autocomplete="off" />
        </el-form-item>
        <el-form-item label="确认密码" prop="repassword">
          <el-input :prefix-icon="Lock" :suffix-icon="Wicon3" maxlength="8"  show-password   v-model="registerData.repassword" type="password"
            autocomplete="off" />
        </el-form-item>
        <div class="bt">
          <el-form-item>
            <el-button type="primary" @click="submitForm(ruleFormRef)">注册</el-button>
            <el-button @click="resetForm()">重置</el-button>
            <el-button @click="isLogin = true">去登录</el-button>
          </el-form-item>
        </div>
      </el-form>
    </div>
  </div>

script

import { User, Lock, CircleCheck, CircleCloseFilled } from '@element-plus/icons-vue'
import { ref } from 'vue'
// 默认是登录
const isLogin = ref(true)
const registerData = ref({
  username: '',
  password: '',
  repassword: ''
})
// 图标
const Wicon = ref('')
const Wicon2 = ref('')
const Wicon3 = ref('')


// 用户名自定义校验icon
const checkicon = (rule, value, callback) => {
  if (registerData.value.username.length >= 2 && registerData.value.username.length <= 8) {
    Wicon.value = CircleCheck
  }else if(registerData.value.username.length === 0){
    Wicon.value = CircleCloseFilled
    callback(new Error("请输入用户名"))
  } 
  else {
    Wicon.value = CircleCloseFilled
    callback(new Error("用户名需2到8位"))
  }
}
// 密码自定义校验
const checkicon2 = (rule, value, callback) => {
  if (registerData.value.password.length >= 4 && registerData.value.password.length <= 8) {
    Wicon2.value = CircleCheck
  } 
  else if(registerData.value.password.length === 0){
    Wicon2.value = CircleCloseFilled
    callback(new Error("请输入密码"))
  }  
  else {
    Wicon2.value = CircleCloseFilled
    callback(new Error("密码需4到8位"))
  }
}

// 校验确认密码函数
const checkPassword = (rule, value, callback) => {
  if (registerData.value.repassword == '') {
    Wicon3.value= CircleCloseFilled
    callback(new Error("请输入确认密码"))

  } else if (registerData.value.repassword !== registerData.value.password) {
    Wicon3.value = CircleCloseFilled
    callback(new Error("两次密码不一致"))
  } else {
    Wicon3.value = CircleCheck
    callback()
  }
}
// 定义表单校验规则
const rules = {
  username: [{ required: true, validator: checkicon,trigger: 'change' }],
  password: [
  { required: true, validator: checkicon2, trigger: 'change' }],

  repassword: [{ validator: checkPassword, trigger: 'change' }]

}
// 清空函数
const resetForm = (value) => {
  registerData.value.username = '';
  registerData.value.password = '';
  registerData.value.repassword = '';
}

css部分,个人审美较差。

.app-login {
  border-radius: 30px;
  height: 500px;
  width: 500px;
  display: flex;
  justify-content: space-around;
  align-items: flex-start;
  flex-direction: column-reverse;
  border: 2px solid #ccc;
  padding: 8px;
  margin: -200px;
  // background-image: url(https://p4.itc.cn/q_70/images03/20230308/8f6053ee5e6348febfda49f7c31ebdf6.jpeg);
  // background-repeat: no-repeat;
  // background-size: cover;
  font-family: "Helvetica Neue"
}

h1 {
  padding-left: 80px;
  margin-bottom: 20px;
}

.form {
  padding: 20px;
  flex: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.bt {
  margin-top: 50px;
}

效果图

在这里插入图片描述
在这里插入图片描述
本文是自己的学习杂记,自己对前端Vue+elementUi+的练习。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络监测之如何保障企业业务系统安全?

网络信息安全在网络时代的重要性不言而喻。随着互联网的普及和数字化进程的加速&#xff0c;网络已经成为人们生活、工作和学习的重要平台。在这个平台上&#xff0c;信息交流、数据存储、在线支付等都需要依赖于网络信息安全。其中企事业单位业务系统安全值得关注。 企事业单…

Linux文件系统与命令行

什么是命令行? 接收键盘命令并将其传给操作系统执行的程序(用于输入和管理命令的程序),统称命令行,也叫: Shell&#xff0c;几乎所有Linux发行版都提供了一个 Shell 程序,叫做: Bash (Bourne-Again Shell, 因为最初的 Shell 是由 Steve Bourne 编写的原始 Unix 程序, Again 表…

关于调试和开发中对文件写操作导致乱码问题

背景基于上文log机制重定向问题&#xff0c;将代码打印单独存放文件中出现双击文件&#xff0c;如下图现象所示(银河麒麟系统) 使用vim打开文件发现有许多/00的乱码。 怀疑是数据没有同步至硬盘导致的。 于是在每次输入到文件后加入fdatasync函数&#xff0c;部分代码如下&am…

TikTok与环保:短视频如何引领可持续生活方式?

在数字时代&#xff0c;社交媒体平台扮演着塑造文化和价值观的关键角色。而TikTok&#xff0c;作为一款全球短视频平台&#xff0c;不仅塑造着用户的娱乐方式&#xff0c;还在悄然地引领着可持续生活方式的潮流。本文将深入探讨TikTok与环保之间的关系&#xff0c;分析短视频如…

11-Kafka

1 Kafka Kafka是一个分布式流式数据平台&#xff0c;它具有三个关键特性 Message System: Pub-Sub消息系统Availability & Reliability&#xff1a;以容错及持久化的方式存储数据记录流Scalable & Real time 1.1 Kafka架构体系 Kafka系统中存在5个关键组件 Producer…

路由器介绍和命令操作

先来回顾一下上次的内容&#xff1a; ip地址就是由32位二进制数组 二进位数就是只有数字0和1组成 网络位&#xff1a;类似于区号&#xff0c;表示区域作用 主机位&#xff1a;类似于号码&#xff0c;表示区域中编号 网络名称&#xff1a;网络位不变&#xff0c;主机位全为0 …

基于Java SSM框架实现二手交易平台网站系统项目【项目源码+论文说明】

基于java的SSM框架实现二手交易平台网站系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认…

易基因2023年度DNA甲基化研究项目文章精选

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 2023年&#xff0c;易基因参与的DNA甲基化研究成果层出不穷&#xff0c;小编选取其中5篇不同方向的论文与您一起来回顾。 01、易基因微量DNA甲基化测序助力中国科学家成功构建胚胎干细胞…

IDEA中Git的常用使用方式

IDEA中Git的常用使用方式 1.初次拉取远程仓库项目代码到本地2.初次提交本地项目代码到远程仓库新分支方式一&#xff1a;提交时把.git目录删除掉&#xff0c;不保留以往修改记录方式二&#xff1a;提交时不删除.git目录&#xff0c;保留以往修改记录 3.日常拉取、提交、推送代码…

如何清洗眼镜?清洗眼镜方法有哪些?好用超声波洗眼镜机推荐

随着现代人对于眼睛健康越来越重视&#xff0c;清洗眼镜成为了日常生活中不可或缺的一环。眼镜上的污渍和细菌不仅会影响视线&#xff0c;还可能对眼睛健康造成威胁。那么&#xff0c;如何清洗眼镜呢&#xff1f;清洗眼镜的方法有哪些呢&#xff1f;今天&#xff0c;我们将为大…

第二证券:A股“磨底”中等待向上突破

A股“磨底”中等候向上打破。从A股两市成交额、首要指数估值和风险溢价看&#xff0c;当时A股处于中长时刻底部区间&#xff0c;投资者倾向于将中长时刻问题在短期定价&#xff0c;市场风险偏好还有待修正。工作装备上&#xff0c;年底板块轮动加速将成为首要特征&#xff0c;大…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十七:演示功能模块相关功能实现

一、本章内容 本章实现常见业务功能,包括文章管理、商品管理、订单管理、会员管理等功能。 1. 详细课程地址: https://edu.csdn.net/course/detail/38183 2. 源码下载地址: 点击下载 二、界面预览 三、开发视频 3.1 B站视频地址:

JVM初识-----01章

一.虚拟机与java虚拟机的区别以及共同点 1.虚拟机&#xff08;Virtual Machine&#xff0c;简称VM&#xff09; 是一种能够在物理计算机上模拟一台完整的计算机系统的软件。它运行在宿主操作系统之上&#xff0c;可以提供一个独立的运行环境&#xff0c;使得在不同的操作系统上…

Node.js(二)-模块化

1. 模块化的基本概念 1.1 什么是模块化 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层将系统拆分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合、分解和更换的单元。 1.2 编程领域中的模块化 编程领域中的模块化&#xff0c;就是遵守固定的规则&…

1224. 交换瓶子(蓝桥杯/图论)

题目&#xff1a; 1224. 交换瓶子 - AcWing题库 输入样例1&#xff1a; 5 3 1 2 5 4输出样例1&#xff1a; 3输入样例2&#xff1a; 5 5 4 3 2 1输出样例2&#xff1a; 2 思路&#xff1a;图论 1.将对应的位置与当前的瓶子序列相连形成环。 2.最少交换次数能形成的最多…

基于深度学习的瓷砖色差分类方法研究——学习笔记(评价:色差的定义太模糊。。。问题描述不清楚,太水了)

文章目录 摘要0 引言1 瓷砖图像处理1.1 图像采集1.2 图像处理 2 基于深度学习的瓷砖色差分类算法设计2.1 数据预处理2.2 卷积神经网络的设计2.3 实验设计 3 瓷砖色差分类平台的设计与实现 摘要 瓷砖是人类建筑不可或缺的一种材料&#xff0c;而瓷砖品质最重要的指标之一就是色…

ggplot2 | line plot 分组及均值线:聚类后的表达变化趋势图

1. 效果图 2. 预处理及绘图 # 输入数据 > head(dat)Species cid variable value 1 setosa 1 Sepal.Length 5.1 2 setosa 2 Sepal.Length 4.9 3 setosa 3 Sepal.Length 4.7 4 setosa 4 Sepal.Length 4.6 5 setosa 5 Sepal.Length 5.0 6 setos…

iOS技术博客:App备案指南

&#x1f4dd; 摘要 本文介绍了移动应用程序&#xff08;App&#xff09;备案的重要性和流程。备案是规范App开发和运营的必要手段&#xff0c;有助于保护用户权益、维护网络安全和社会秩序。为了帮助开发者更好地了解备案流程&#xff0c;本文提供了一份最新、最全、最详的备…

React 路由传参

引言 在上一篇中&#xff0c;我们学习了 React 中使用路由技术&#xff0c;以及如何使用 MyNavLink 去优化使用路由时的代码冗余的情况。 这一节我们继续上一篇 React 路由进行一些补充 1. Switch 解决相同路径问题 首先我们看一段这样的代码 <Route path"/home&q…

C#与php自定义数据流传输

C#与php自定义数据流传输 介绍一、客户端与服务器数据传输流程图客户端发送数据给服务器&#xff1a;服务器返回数据给客户端&#xff1a; 二、自定义数据流C#版本数据流PHP版本数据流 三、数据传输测试1.在Unity中创建一个C#脚本NetWorkManager.cs2.服务器www目录创建StreamTe…