vue3前端开发-小兔鲜项目-登录组件的开发表单验证

vue3前端开发-小兔鲜项目-登录组件的开发表单验证!现在开始写登录页面的内容。首先这一次完成基础的首页按钮点击跳转,以及初始化一些简单的表单的输入验证。后期还会继续完善内容。


1:首先还是准备好login页面的组件代码内容。

<script setup>
import { ref } from 'vue'
// 表单数据对象
const userInfo = ref({account: '1341234',password: '123456',agree: true
})
// 规则数据对象
const rules = {account: [{ required: true, message: '用户名不能为空',trigger:'blur' }],password: [{ required: true, message: '密码不能为空' ,trigger:'blur'},{ min: 6, max: 24, message: '密码长度要求6-14个字符' ,trigger:'blur'}],agree: [{validator: (rule, val, callback) => {return val ? callback() : new Error('请先同意协议')}}]
}
</script><template><div><header class="login-header"><div class="container m-top-20"><h1 class="logo"><RouterLink to="/">小兔鲜</RouterLink></h1><RouterLink class="entry" to="/">进入网站首页<i class="iconfont icon-angle-right"></i><i class="iconfont icon-angle-right"></i></RouterLink></div></header><section class="login-section"><div class="wrapper"><nav><a href="javascript:;">账户登录</a></nav><div class="account-box"><div class="form"><el-form label-position="right" label-width="60px":model="userInfo" :rules="rules" status-icon><el-form-item  label="账户" prop="account"><el-input v-model="userInfo.account"/></el-form-item><el-form-item label="密码" prop="password"><el-input v-model="userInfo.password"/></el-form-item><el-form-item label-width="22px" prop="agree"><el-checkbox v-model="userInfo.agree" size="large" >我已同意隐私条款和服务条款</el-checkbox></el-form-item><el-button size="large" class="subBtn">点击登录</el-button></el-form></div></div></div></section><footer class="login-footer"><div class="container"><p><a href="javascript:;">关于我们</a><a href="javascript:;">帮助中心</a><a href="javascript:;">售后服务</a><a href="javascript:;">配送与验收</a><a href="javascript:;">商务合作</a><a href="javascript:;">搜索推荐</a><a href="javascript:;">友情链接</a></p><p>CopyRight &copy; 小兔鲜儿</p></div></footer></div>
</template><style scoped lang='scss'>
.login-header {background: #fff;border-bottom: 1px solid #e4e4e4;.container {display: flex;align-items: flex-end;justify-content: space-between;}.logo {width: 200px;a {display: block;height: 132px;width: 100%;text-indent: -9999px;background: url("@/assets/images/logo.png") no-repeat center 18px / contain;}}.sub {flex: 1;font-size: 24px;font-weight: normal;margin-bottom: 38px;margin-left: 20px;color: #666;}.entry {width: 120px;margin-bottom: 38px;font-size: 16px;i {font-size: 14px;color: $xtxColor;letter-spacing: -5px;}}
}.login-section {background: url('@/assets/images/login-bg.png') no-repeat center / cover;height: 488px;position: relative;.wrapper {width: 380px;background: #fff;position: absolute;left: 50%;top: 54px;transform: translate3d(100px, 0, 0);box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);nav {font-size: 14px;height: 55px;margin-bottom: 20px;border-bottom: 1px solid #f5f5f5;display: flex;padding: 0 40px;text-align: right;align-items: center;a {flex: 1;line-height: 1;display: inline-block;font-size: 18px;position: relative;text-align: center;}}}
}.login-footer {padding: 30px 0 50px;background: #fff;p {text-align: center;color: #999;padding-top: 20px;a {line-height: 1;padding: 0 10px;color: #999;display: inline-block;~a {border-left: 1px solid #ccc;}}}
}.account-box {.toggle {padding: 15px 40px;text-align: right;a {color: $xtxColor;i {font-size: 14px;}}}.form {padding: 0 20px 20px 20px;&-item {margin-bottom: 28px;.input {position: relative;height: 36px;>i {width: 34px;height: 34px;background: #cfcdcd;color: #fff;position: absolute;left: 1px;top: 1px;text-align: center;line-height: 34px;font-size: 18px;}input {padding-left: 44px;border: 1px solid #cfcdcd;height: 36px;line-height: 36px;width: 100%;&.error {border-color: $priceColor;}&.active,&:focus {border-color: $xtxColor;}}.code {position: absolute;right: 1px;top: 1px;text-align: center;line-height: 34px;font-size: 14px;background: #f5f5f5;color: #666;width: 90px;height: 34px;cursor: pointer;}}>.error {position: absolute;font-size: 12px;line-height: 28px;color: $priceColor;i {font-size: 14px;margin-right: 2px;}}}.agree {a {color: #069;}}.btn {display: block;width: 100%;height: 40px;color: #fff;text-align: center;line-height: 40px;background: $xtxColor;&.disabled {background: #cfcdcd;}}}.action {padding: 20px 40px;display: flex;justify-content: space-between;align-items: center;.url {a {color: #999;margin-left: 10px;}}}
}.subBtn {background: $xtxColor;width: 100%;color: #fff;
}
</style>

2:开始完善一下,页面使用到的内容,一个是用户信息userInfo。一个是表单验证对象rules。

import { ref } from 'vue'
// 表单数据对象
const userInfo = ref({account: '1341234',password: '123456',agree: true
})
// 规则数据对象
const rules = {account: [{ required: true, message: '用户名不能为空' }],password: [{ required: true, message: '密码不能为空' },{ min: 6, max: 24, message: '密码长度要求6-14个字符' }],agree: [{validator: (rule, val, callback) => {return val ? callback() : new Error('请先同意协议')}}]
}

3:测试一下情况如何。

如图所示,输入错误的时候,表单验证成功激发了效果。


输入正确的时候,表达验证没有报错了,说明表单验证代码是起到了效果了。

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

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

相关文章

巴黎奥运观赛AI新体验来了!通义App上线“赛事百事通”等多款新功能

巴黎奥运会期间&#xff0c;通义App上线赛事百事通、全民云运动、AI运动写真等多款新功能。这些新功能基于通义大模型打造&#xff0c;让国内体育迷们看奥运、聊奥运的同时&#xff0c;也能体验AI技术带来的观赛新体验。 据了解&#xff0c;打开通义App&#xff0c;进入“巴黎2…

每日OJ_牛客_求最小公倍数

目录 牛客_求最小公倍数 解析代码 牛客_求最小公倍数 求最小公倍数__牛客网 解析代码 最小公倍数 两数之积除以最大公约数&#xff0c;这里使用碾转相除法进行最大公约数的求解&#xff1a;即a与b的最大公约数可以转化为a、b之间的余数为两者之间最小的数之间的公约数。所以…

Linux云计算 |【第二阶段】AUTOMATION-DAY3

主要内容&#xff1a; Jenkins项目管理、构建分发服务器、自动化上线的案例部署 补充&#xff1a;yum与dnf只是做了快捷方式&#xff0c;用法一样 [rootnode1 ~]# ll /bin/yum lrwxrwxrwx. 1 root root 5 Feb 18 2020 /bin/yum -> dnf-3 [rootnode1 ~]# ll /bin/dnf lrwx…

deepseek-vl 论文阅读笔记

目录 一、已有模型性能差距分析 二、创新点 数据集构建 模型架构 训练策略 实验与评估 三、细节 数据构建 内部SFT数据的分类体系 模型架构 训练流程包括三个阶段 系统包含三个模块 混合视觉编码器 视觉-语言适配器 语言模型 训练策略 阶段一&#xff1a;训练…

基于MediaPipe的手部特征点识别

基于MediaPipe的手部特征点识别 MediaPipe简介 MediaPipe Solutions 提供了一套库和工具&#xff0c;可以在安卓或者windows应用中快速应用人工智能 (AI) 和机器学习 (ML) 技术。 MediaPipe 手部地标任务可检测图片中手部的特征点。识别效果如下 环境配置 python -m pip ins…

PandasDataFrame知识点(巨详细)

15.Pandas&#xff1a; Pandas是基于NumPy的一种工具&#xff0c;该工具是为解决数据分析任务而创建的&#xff0c;Pandas提供了大量能使我们快速便携地处理数据的功能。Pandas的主要数据结构是Series与DataFrame。 16.Series&#xff08;可以看作有序的字典&#xff09; 类…

函数图像是如何画出来的(LiveCharts2)

大火的人工智能本质上就是一些简单的函数的组合&#xff0c;比如f(x)kxb&#xff0c;只是可能不只有x,还会x1&#xff0c;x2&#xff0c;…xn&#xff0c;只是维数不同&#xff0c;当维数很多的时候自然就需要方程组才能求解&#xff0c;维数越多自然需要的算力就越多。于是就有…

使用python中的特殊字典——defaultdict

专栏总目录 一、defaultdict说明 在Python中是一个特殊类型的字典&#xff0c;它是collections模块中的一个类defaultdict的实例。这个字典与普通的字典dict不同之处在于&#xff0c;当你试图访问一个不存在的键时&#xff0c;defaultdict会自动创建一个新条目&#xff0c;其值…

9步带你完全了解FPC柔性电路板,一文搞懂什么是FPC!

FPC你所要了解的— 01 FPC软板&#xff0c;是一种神奇的电子元件&#xff0c;它能够随心所欲地弯曲、折叠、缠绕&#xff0c;像一条灵活的蛇&#xff0c;在狭小的空间里穿梭自如。它是怎么做到的呢&#xff1f; 随着社会的不断进步&#xff0c;电子行业的不断更新换代&#xff…

02 USB_JTAG驱动安装

1 概述 一般安装vitis(vivado)的过程中勾选了安装JTAG cable驱动就会默认安装好JTAG驱动&#xff0c;但是如果vivado无法正确识别到JTAG&#xff0c;那么可以试下重新手动安装驱动 2 准备工作 安装驱动前&#xff0c;必须关闭所有的vivado,vitis-sdk并且拔掉USB JTAG 以免导…

【机器学习】用Jupyter Notebook实现并探索单变量线性回归的代价函数以及遇到的一些问题

引言 在机器学习中&#xff0c;代价函数&#xff08;Cost Function&#xff09;是一个用于衡量模型预测值与实际值之间差异的函数。在监督学习中&#xff0c;代价函数是评估模型性能的关键工具&#xff0c;它可以帮助我们了解模型在训练数据上的表现&#xff0c;并通过优化过程…

OLLaMA搭建本地大模型

LLMChain是一个简单的链&#xff0c;接受一个提示模板&#xff0c;使用用户输入格式化它并从LLM返回响应。 其中&#xff0c;prompt_template是一个非常关键的组件&#xff0c;可以让你创建一个非常简单的链&#xff0c;它将接收用户输入&#xff0c;使用它格式化提示&#xff…

Mybatis(三) 查询不同数据封装的方式

实体类&#xff1a; 数据库&#xff1a; 1、查询一个实体类对象 /** * 根据用户id查询用户信息* param id * return */User getUserById(Param("id") int id);<select id"getUserById" resultType"User">select * from t_user where id …

【数据结构初阶】单链表经典算法题十二道——得道飞升(上篇)

目录 1、移除元素 2、反转链表 3、链表的中间节点 4、合并两个有序链表 Relaxing Time&#xff01;&#xff01;&#xff01; ———————————————— 天气之子幻 ———————————————— 1、移除元素 思路&#xff1a; 创建一个新链表&#xff0…

<PLC><HMI><汇川>在汇川HMI画面中,如何为UI设置全局样式?

前言 汇川的HMI软件是使用了Qt来编写的,因此在汇川的HMI程序编写过程,是支持使用qt的样式来自定义部件样式的,即qss格式。 概述 汇川的软件本身提供三个系统的style样式,我们可以直接使用,但是,如果系统提供的样式不符合你的需求,那么你可以对其进行修改,或者自己新建…

IC秋招RTL代码合集

一 全加器和半加器 全加器 module full_adder1(input Ai, Bi, Ci,output So, Co);assign So Ai ^ Bi ^ Ci ;assign Co (Ai & Bi) | (Ci & (Ai | Bi)); endmodule module full_adder1(input Ai, Bi, Cioutput So, Co);assign {Co, So} Ai Bi Ci ; endm…

常见CSS属性(二)——浮动

一、浮动简述 浏览器在解析html文档时&#xff0c;正常的顺序是从上往下、从左往右解析。这个正常的解析过程&#xff0c;叫做正常文档流(标准文档流)&#xff0c;而浮动就是使得元素脱离文档流&#xff0c;“浮”在浏览器上。 浮动会使元素脱离文档流&#xff0c;不占位置&…

切换数据失败0x1671分析

1、问题背景 切换双卡数据开关&#xff0c;无法切换成功&#xff0c;且单机必现该问题 2、问题分析 搜索Log发现相关拨号无法建立成功&#xff0c;返回0x1671&#xff0c;无法建立PDN连接。 相关拨号上层未下发相关AT命令&#xff0c;属于上层报错&#xff0c;并非网络问题&…

leetcode日记(53)有效数字

一看题目就感觉好复杂&#xff01;试着写了一下&#xff0c;因为题目描述不清晰所以中途按照错误示例反复修改了很多次&#xff1a; class Solution { public:bool isNumber(string s) {if(s.size()0) return 0;if(s[0]||s[0]-){string sss.substr(1);if(s[1]!&&s[1]!…

【微软蓝屏】微软Windows蓝屏问题汇总与应对解决策略

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…