广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue3实现登录表单验证功能
  • 567
分享到

Vue3实现登录表单验证功能

2024-04-02 19:04:59 567人浏览 独家记忆
摘要

目录一.实现思路与效果图二.实现具体过程三.完整代码与效果图一.实现思路与效果图 使用async-validator 插件,阿里出品的 antd 和 ElementUI 组件库中表单

一.实现思路与效果图

使用async-validator 插件,阿里出品的 antd 和 ElementUI 组件库中表单校验默认使用的 async-validator。

效果图:

二.实现具体过程

npm i async-validator -S

绑定loginFORM

const loginForm = Reactive({
  username: "",
  passWord: "",
});

初始化检验规则和错误提示

// 校验规则
const descriptor = reactive({
  username: {
    required: true,
    message: "账号不能为空",
  },
  password: [
  // 多条校验规则
    {
      required: true,
      message: "密码不能为空",
    },
    {
      validator(rule, value, callback) {
        value < 12 ? callback(new Error("不能少于12位")) : callback();
      },
    },
  ],
});

created里实例化构造函数表示创建一个校验器,参数为校验规则对象

const validator = reactive(new Schema(descriptor));

定义提交的方法

   const submit = () => {
            this.clearMessage()
            validator.validate(this.form, {
                firstFields: true
            }).then(() => {
                // 校验通过
                console.log('ok')
            }).catch(({ errors }) => {
                // 校验未通过
                // 显示错误信息
                for (let { field, message } of errors)                  
                this.errorMessage[field] = message
            })
        },

clearMessage // 清空校验错误提示

const clearMessage = () => {
  for (let key in errorMessage) {
    errorMessage[key] = "";
  }
};

validate方法

验证器对象的validate方法用于验证数据是否符合验证规则。

如验证一个空对象,是否符合验证规则

function(source, [options], callback): Promise

参数:

  • source 要验证的对象(必选)
  • [options] 验证处理选项对象(可选)
  • callback 验证完成时调用的回调函数(可选)

options的配置

{
  suppressWarning: false, // 是否禁止无效值的内部警告
  first: false, // 是否在第一个规则验证错误时调用回调,不再处理其他验证规则
  firstFields: true // 是否在指定字段的第一个规则验证错误时调用回调,不再处理相同字段的验证规则,true代表所有字段
}

返回值:
validate方法返回一个promise对象,可以用then方法和catch方法绑定成功或失败的处理

validator.validate({})
  .then(() => {
    console.log('验证通过')
  })
  .catch(({ errors, fields }) => {
  console.log('验证不通过', errors, fields)
})

使用v-bind控制输入框红色的显隐藏 :class="{ checkusername: isActiveUsername }"如果为空则显示红色

三.完整代码与效果图

完整代码

<template>
  <div class="main">
    <h3>vue3表单验证</h3>

    <div class="form-box">
      <div class="form-group">
        <label class="label">账号</label>
        <input
         :class="{ checkusername: isActiveUsername }"
          type="text"
          v-model="loginForm.username"
          class="input"
          placeholder="请输入账号"
        />
        <span class="check-message">{{ errorMessage.username }}</span>
      </div>
      <div class="form-group">
        <label class="label">密码</label>
        <input
          :class="{ checkpassword: isActivePassword }"
          tyep="password"
          v-model="loginForm.password"
          type="text"
          placeholder="请输入密码"
          class="input"
        />
        <span class="check-message">{{ errorMessage.password }}</span>
      </div>

      <div class="form-group">
        <button class="btn" @click="submit()">保存</button>
      </div>
    </div>
  </div>
</template>

<script setup>
import Schema from "async-validator";
import { reactive,ref } from "Vue";
//控制输入框变红
const isActiveUsername = ref(false)
const isActivePassword = ref(false)
// 表单对象
const loginForm = reactive({
  username: "",
  password: "",
});
// 校验规则
const descriptor = reactive({
  username: {
    required: true,
    message: "姓名不能为空",
  },
  password: [
    {
      required: true,
      message: "密码不能为空",
    },
  ],
});
// 错误提示
const errorMessage = reactive({
  username: "",
  password: "",
});
const validator = reactive(new Schema(descriptor));
const submit = () => {
   if (loginForm.username === '') {
    isActiveUsername.value = true
  }
  if (loginForm.password === '') {
    isActivePassword.value = true
  }
  if (loginForm.username != '') {
    isActiveUsername.value = false
  }
  if (loginForm.password != '') {
    isActivePassword.value = false
  }
  clearMessage();
  validator
    .validate(loginForm, {
      firstFields: true,
    })
    .then(() => {
      // 校验通过
      console.log(" 校验通过,可以发起请求");
    })
    .catch(({ errors }) => {
      // 校验未通过
      // 显示错误信息
      for (let { field, message } of errors) errorMessage[field] = message;
    });
};
// 清空校验错误提示
const clearMessage = () => {
  for (let key in errorMessage) {
    errorMessage[key] = "";
  }
};
</script>

<style scoped>
.main {
  text-align: center;
}
.btn {
  margin: 0;
  line-height: 1;
  padding: 15px;
  height: 30px;
  width: 60px;
  font-size: 14px;
  border-radius: 4px;
  color: #fff;
  background-color: #2080f0;
  white-space: nowrap;
  outline: none;
  position: relative;
  border: none;
  display: inline-flex;
  flex-wrap: nowrap;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  user-select: none;
  text-align: center;
  cursor: pointer;
  text-decoration: none;
}
.form-box {
  width: 500px;
  max-width: 100%;
  margin: 0 auto;
  padding: 10px;
  border: 5px solid rgb(171 174 186);
}
.form-group {
  height: 30px;
  margin: 10px;
  padding: 10px 15px 10px 0;
}
.label {
  padding-right: 10px;
  padding-left: 10px;
  display: inline-block;
  box-sizing: border-box;
  width: 110px;
  text-align: right;
}

.input {
  width: calc(100% - 120px);
  height: 28px;
}
.check-message {
  color: #d03050;
  position: relative;
  left: -70px;
}
.checkpassword,
.checkusername {
  border: 2px solid #d03050 !important ;
}
</style>

参考链接:

https://GitHub.com/tmpfs/async-validate

Https://www.cnblogs.com/wozho/p/10955525.html

到此这篇关于Vue3实现登录表单验证的文章就介绍到这了,更多相关vue3表单验证内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue3实现登录表单验证功能

本文链接: https://www.lsjlt.com/news/152416.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue3实现登录表单验证功能
    目录一.实现思路与效果图二.实现具体过程三.完整代码与效果图一.实现思路与效果图 使用async-validator 插件,阿里出品的 antd 和 ElementUI 组件库中表单...
    99+
    2022-11-13
  • vue3+vite3+typescript实现验证码功能及表单验证效果
    目录验证码组件父组件表单验证最终效果验证码组件 <template> <div class="captcha" style="display: flex;"&...
    99+
    2023-05-16
    vue3+vite3+typescript验证码 vue3+vite3+typescript表单验证
  • Express + Session 实现登录验证功能
    1. 写在前面 当我们登录了一个网站,在没有退出登录的情况下,我们关闭了这个网站 ,过一段时间,再次打开这个网站,依然还会是登录状态。这是因为,当我们登录了一个网站,服务器会保存我们的登录状态,直到我们退出...
    99+
    2022-06-04
    功能 Express Session
  • java实现登录验证码功能
    本文实例为大家分享了java实现登录验证码功能的具体代码,供大家参考,具体内容如下 登录验证码 登录验证是大多数登录系统都会用到的一个功能,它的验证方式也是有很多种,例如登录验证码,...
    99+
    2022-11-12
  • vue实现表单验证功能
    本篇主要讲述如何基于NUXT的validate方法实现表单的验证。 将验证方法封装后,使用的时候只需像:rules="filter_rules({required:true,type...
    99+
    2022-11-12
  • jQuery实现表单验证功能
    jQuery表单验证实例 / 包含用户名、密码、住址、邮箱验证 如下图 别忘了引入jQuery框架!!! 话不多说直接先上jQuery部分代码: <script type...
    99+
    2022-11-12
  • vue实现表单验证小功能
    本文实例为大家分享了vue实现表单验证的具体代码,供大家参考,具体内容如下 1.路由跳转 先点开Vue项目中src目录配置router文件然后用import暴露你的表单页名称并在你的...
    99+
    2022-11-12
  • Vue3 + elementplus实现表单验证+上传图片+ 防止表单重复提交功能
    首先,上官网地址 https://element.eleme.cn/ 首先页面上面用了弹窗的形式,做完之后长这样,有全屏,关闭等按钮,上效果图和完整代码!!!!! <!--点...
    99+
    2022-11-13
    Vue3  elementplus表单验证 Vue3  elementplus防止表单重复提交 Vue3  elementplus上传图片
  • Python实现简单登录验证
    本文实例为大家分享了简单的Python登录验证,供大家参考,具体内容如下 编写登录接口 要求:1、输入用户名密码    2、认证成功后显示欢迎信息    3、输错三次后锁定 #coding=utf-8 ...
    99+
    2022-06-04
    简单 Python
  • Ajax如何实现表单验证功能
    本篇内容主要讲解“Ajax如何实现表单验证功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Ajax如何实现表单验证功能”吧! 兼...
    99+
    2022-10-19
  • AngularJS怎么实现表单验证功能
    这篇文章给大家分享的是有关AngularJS怎么实现表单验证功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:在AngularJS的管辖下,每个表单form都会创建一个...
    99+
    2022-10-19
  • SpringMVC实现表单验证功能详解
    本章节内容很丰富,主要有基本的表单操作,数据的格式化,数据的校验,以及提示信息的国际化等实用技能。首先看效果图项目结构图接下来用代码重点学习SpringMVC的表单操作,数据格式化,数据校验以及错误提示信息国际化。请读者将重点放在UserC...
    99+
    2023-05-30
    spring springmvc 表单验证
  • vue3+async-validator如何实现表单验证
    本篇内容主要讲解“vue3+async-validator如何实现表单验证”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue3+async-validator如何实现表单验证”吧!搭建vue3...
    99+
    2023-07-02
  • Java登录功能实现token生成与验证
    一、token与cookie相比较的优势 1、支持跨域访问,将token置于请求头中,而cookie是不支持跨域访问的; 2、无状态化,服务端无需存储token,只...
    99+
    2022-11-12
  • js前端实现登录拼图验证功能
    目录前言核心功能实现原理实现前端登录拼图验证搭建框架添加被校验区域及校验区域添加滑块、滑块背景、拖动条、提示文字添加交互联动被校验区域随机生成校验位置完整代码总结前言 不知各位朋友现...
    99+
    2023-02-17
    js登录验证 拼图验证 完成拼图通过验证
  • AngularJS实现表单验证功能的方法
    这篇文章主要为大家展示了“AngularJS实现表单验证功能的方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“AngularJS实现表单验证功能的方法”这篇文...
    99+
    2022-10-19
  • AngularJS中如何实现表单验证功能
    小编给大家分享一下AngularJS中如何实现表单验证功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  ...
    99+
    2022-10-19
  • Django中使用pillow实现登录验证码功能(带刷新验证码功能)
    首先在项目里建立common目录,编写验证码的函数 verification_code.py import random from PIL import Image, Imag...
    99+
    2022-11-12
  • Vue3 实现验证码倒计时功能
    目录前言实现效果PS:Vue3 - 验证码按钮倒计时实现前言 倒计时的运用场景:获取手机验证码倒计时、获取邮箱验证码倒计时等场景,废话不多说,开始吧。 之前给大家介绍过Vue3&nb...
    99+
    2023-01-07
    Vue3 验证码倒计时 Vue获取验证码倒计时 vue3验证码按钮倒计时
  • Vue前端登录token信息验证功能实现
    用户在首次访问网站时,应在登录页面填写账号密码,前端携带用户信息向服务器请求。 1、服务器验证用户信息 验证失败:给前端响应数据 验证通过:对该用户创建token,并以响应数据返回给...
    99+
    2022-12-27
    Vue token验证 Vue前端token验证
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作