最近刚刚上手了 Vue3antdv ui框架,来做个简单的登录校验练练手

安装 antdv 依赖

npm install ant-design-vue --save

main.ts/js 中注册

// main.ts
import { createApp } from 'vue'
import App from './App.vue'
import 'ant-design-vue/dist/antd.css'
import Antd from 'ant-design-vue' createApp(App).use(Antd).mount('#app')

编写登录页面

登录界面的具体代码在这里,博客中只展示重要的逻辑和样式。

// LoginPage.vue
<template>
<a-form>
<a-form-item>
<a-input placeholder="请输入用户名"></a-input>
</a-form-item>
<a-form-item>
<a-input-password placeholder="请输入密码"></a-input-password>
</a-form-item>
<a-form-item>
<a-button>登录</a-button>
</a-form-item>
</a-form>
</template>

基本的样式只有上面的几行代码,后续的逻辑都是关于表单验证的。下面来写一下 js 代码:

<script lang="ts" setup>
import {FormInstance} from "ant-design-vue";
import {reactive, ref} from "vue";
import {Rule} from "ant-design-vue/es/form"; const formRef = ref<FormInstance>(); // 通过为 form 加上 ref 属性可以获取表单实例 // 定义表单域
const formState = reactive({
userName: '',
passWord: ''
}); // 用户名校验规则
const userNameCheck = async (_rule: Rule, value: string) => {
if (!value) {
return Promise.reject('用户名不能为空')
} else if (value.length <= 2) {
return Promise.reject('用户名长度不能小于两个字符')
} else {
return Promise.resolve()
}
} // 密码校验规则
const passWordCheck = async (_rule: Rule, value: string) => {
if (!value) {
return Promise.reject('密码不能为空')
} else if (value.length < 5) {
return Promise.reject('密码长度不能小于5个字符')
} else {
return Promise.resolve()
}
} </script>

写好基本的校验规则后,就可以将相关的内容加到 <template> 中了:

<a-form :model="formState" ref="formRef" @finish="jump">
<!-- @finish="jump" 下面的js代码会提到 -->
<a-form-item :rules="[{validator: userNameCheck, trigger: 'blur'}]" name="userName">
<!-- form-item 必须加上 name 属性,且需要和 formState 中的属性同名 -->
<a-input
placeholder="请输入用户名"
v-model:value="formState.userName"
></a-input>
</a-form-item>
<a-form-item name="passWord" :rules="[{validator: passWordCheck, trigger: 'blur'}]">
<!-- trigger=blur 会在输入框失焦时触发表单校验,=change会在点击登录时触发校验 -->
<a-input-password placeholder="请输入密码" v-model:value="formState.passWord"></a-input-password>
</a-form-item>
<a-form-item>
<a-button type="primary" html-type="submit">登录</a-button>
<!-- 只有填写了 html-type="submit" 才可以使按钮具有表单校验的功能,才可以使 @finsih属性生效 -->
</a-form-item>
</a-form>

可以看到上面的 <a-form> 有一个 @finish 的属性,其值为一个名为 「jump」的函数,作用是 在点击按钮后,如果校验成功则进行路由跳转

function jump() {
router.push('/');
}

测试

在线浏览页面

在未满足校验条件点击提交 或者输入框失去焦点后,会触发校验失败的提示:

如果填写的内容满足要求,则会在点击按钮后执行 路由跳转

ant-design-vue 登录表单校验的更多相关文章

  1. 文档驱动 —— 表单组件(五):基于Ant Design Vue 的表单控件的demo,再也不需要写代码了。

    源码 https://github.com/naturefwvue/nf-vue3-ant 特点 只需要更改meta,既可以切换表单 可以统一修改样式,统一升级,以最小的代价,应对UI的升级.切换,应 ...

  2. Vue.js表单校验;动画指令;避免内存泄露。

    Vue.js表单校验: 动画指令:创建自定义的滚动指令. 避免内存泄露. 避免内存泄露 在单页面应用开发时SPA,用户无需刷新浏览器.所以javascript应用需要自行清理组件来防止内存占用不断增长 ...

  3. Vue Element-ui表单校验规则,你掌握了哪些?

    1.前言   Element-ui表单校验规则,使得错误提示可以直接在form-item下面显示,无需弹出框,因此还是很好用的.   我在做了登录页面的表单校验后,一度以为我已经很了解表单的校验规则. ...

  4. 【转】vue.js表单校验详解

    官方文档:https://monterail.github.io/vuelidate/ https://github.com/monterail/vuelidate 1.npm安装vue-valida ...

  5. vue+element表单校验功能

    要实现这个功能其实并不难,element组件直接用就可以, 但是我在使用过程中碰到了几个坑,就记录下来,分享给大家,避免落坑,话不多说,直接上过程...... 表单校验功能:   实现这个功能,总共分 ...

  6. vue elementUI 表单校验(数组多层嵌套)

    在使用vue element-ui form表单渲染的时候,会遇到这样的数据结构: { "title":''123455, "email":'123456@qq ...

  7. Ant Design Vue 走马灯实现单页多张图片轮播

    最近的项目有个需求是,这种单页多图一次滚动一张图片的轮播效果,项目组件库是antd 然而用了antd的走马灯是这样子的 我们可以看到官网给的api是没有这种功能,百度上也多是在css上动刀,那样也就毕 ...

  8. vue elementUI 表单校验(多层嵌套)

    <template> <el-form :model="formData" :rules="formRule" ref="formD ...

  9. vue 表单校验(二)

    vue 表单校验(二) vue element-ui表单校验 由于现在使用element-ui进行form表单校验,因而使用其自带的校验规则进行校验,发现有些并不是那么好校验,或者说是校验起来很繁琐, ...

  10. 基于Ant Design Vue封装一个表单控件

    开源代码 https://github.com/naturefwvue/nf-vue3-ant 有缺点本来是写在最后的,但是博文写的似乎有点太长了,估计大家没时间往下看,于是就把有缺点写在前面了,不喜 ...

随机推荐

  1. MapGIS路网数据发布

    准备 1.MapGIS 10 桌面版(我用的10.5.6.10) 2.路网的shp文件 数据导入 1.创建要素集,如果已有要素集可以不用创建: 2.导入路网要素类,选择准备好的shp文件后导入即可: ...

  2. 【Java】Vue-Element-Admin 嵌入Druid监控面板

    我看到若依做了Druid面板的嵌入,我自己的项目干脆也做一个 一.后台服务SpringBoot: Druid配置项: spring: datasource: url: jdbc:mysql://127 ...

  3. 【H5】03 文本内容处理

    摘自: https://developer.mozilla.org/zh-CN/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals ...

  4. URDF(Universal Robot Description Format)—— 通用机器人描述格式URDF文件简介与生成

    参考: https://zhuanlan.zhihu.com/p/477556743 详细介绍资料: https://wiki.ros.org/urdf/XML

  5. AI大模型的技术之母 —— Attention Is All You Need —— Tansformer

    论文地址: https://arxiv.org/abs/1706.03762

  6. 七牛云-存储区域代码:报错:"statusCode": 400,"error": incorrect region, please use up-cn-east-2.qiniup.com ——【图床】Typora 七牛云图床 配置文件

    使用PicList对七牛云配置图床,报错信息: 2023-12-13 19:52:19 [PicList ERROR] { "method": "POST", ...

  7. java多线程之ReentrantLock详解

    1.背景 2.基本语法 public class Test01 { // 定义锁 static ReentrantLock reentrantLock = new ReentrantLock(); p ...

  8. springboot中统一日志输出logback

    1.背景 为了便于分析和记录系统的运行,一个系统输出其运行的关键日志是非常必要的 比如输出:请求参数.请求url.请求方式.执行的sql.重要操作的日志.响应结果等 而这些日志中,大部分不需要我们手动 ...

  9. HTTP 常见状态码【5种最最最常见的状态码】

    HTTP 常见状态码 一.200 [ok] 一切正常 二.400 [Bad Request] 客户端 出现问题 需要注意:前端传入的参数与后台接收数据时的 参数名 必须保持一致 三.500 [Inte ...

  10. C# 读取DBF文件到Datatable

    此种方式不依赖与任何驱动,第三方插件. 核心代码TDbfTable如下: using System; using System.Collections.Generic; using System.Te ...