VUE实现密码验证与提示功能


Posted in Javascript onOctober 18, 2019

本文实例为大家分享了VUE密码验证与提示功能的具体代码,供大家参考,具体内容如下

1. 概述

1.1 说明

vue项目中,为了较为明了的让用户看到所输入的密码信息的长度与复杂度是否满足要求,开发一个组件来满足此需求(当密码输入时进行密码验证操作,当密码的长度在8到24位之间,密码中包含数字/小写字母/大写字母/特殊字符中的三项或三项以上则位正确)。

1.2 条件与思路

1.密码框得到焦点显示提示信息

2.验证密码长度在8到24位之间

3.验证密码复杂度(数字/小写字母/大写字母/特殊字符三项或三项以上)

4.密码框失去焦点隐藏提示信息

 2. 实例

 2.1 密码验证提示组件

<template>
 <div class="pwdTipContent" v-show="isShowTip">
 <dl>
 <dt>
 <i class="iWeak" :class="{active: degreeNumber >= 3 , normal: degreeNumber==1 || degreeNumber == 2}"></i>
 <i class="iMiddle" :class="{active: degreeNumber >= 3, normal: degreeNumber == 2}"></i>
 <i class="iStrong" :class="{active:degreeNumber>=3}"></i>
 <b class="degreeWeak" v-show='degreeNumber==1'>弱</b>
 <b class="degreeMiddle" v-show='degreeNumber==2'>中</b>
 <b class="degreeStrong" v-show='degreeNumber>=3'>强</b>
 </dt>
 <dd>
 <i :class="{'el-icon-warning': !bPwd, 'active': bPwd === false, 'el-icon-success': bPwd}"></i>8-24 位
 </dd>
 </dl>
 </div>
</template>
<script>
 export default {
 name: "verifyPassWordTip",
 props: {
 password: {
 type: String
 },
 isShowTip: {
 type: Boolean
 }
 },
 data() {
 return {
 bPwd: null,//密码值和长度的验证
 degreeNumber: 0//密码复杂度的验证
 };
 },
 watch: {
 password() {
 this.initPassWord();
 }
 },
 methods: {
 /**
 * 密码加载
 **/
 initPassWord() {
 if (!this.password) {
  this.$data.bPwd = null; //没有值标签背景置灰
  this.$data.degreeNumber=0;
 } else {
  let objReturn = this.passwordValid(this.password);
  if (objReturn) {
  this.$data.bPwd = objReturn.bPwd;
  this.$data.degreeNumber = objReturn.degreeNumber;
  }
 }
 },
 /**
 * 密码验证(密码复杂度:(1)大写字母(2)小写字母(3)数字(4)特殊符号,密码至少需包含上述情形中的三种)
 * @param valPWD输入的密码信息
 * @return 返回验证信息
 **/
 passwordValid(valPwd) {
 let msg = "";
 let degreeNumber = 0;
 let bPwd = false;

 if (valPwd == null || valPwd.length < 8 || valPwd.length > 24 || valPwd.trim().length == "") {
  bPwd = false;
 } else {
  bPwd = true;
 }
 let arrVerify = [
  {regName: 'Number', regValue: /^.*[0-9]+.*/},
  {regName: 'LowerCase', regValue: /^.*[a-z]+.*/},
  {regName: 'UpperCase', regValue: /^.*[A-Z]+.*/},
  {regName: 'SpecialCharacters', regValue: /^.*[^a-zA-Z0-9]+.*/}
 ];
 let regNum = 0;// 记录匹配的次数
 for (let iReg = 0; iReg < arrVerify.length; iReg++) {
  if (arrVerify[iReg].regValue.test(valPwd)) {
  regNum = regNum + 1;
  }
 }
 degreeNumber = regNum;
 if (regNum <= 2) {
  msg = "密码必须包含大小写字母和数字";
 }
 let objReturn = {
  msg: msg,
  degreeNumber: degreeNumber,
  bPwd: bPwd
 };
 return objReturn;
 }
 }
 }
</script>
<style>
 .pwdTipContent .el-icon-warning{
 color:gray;
 }
 .pwdTipContent .el-icon-warning.active{
 color:red;
 }
 .pwdTipContent i.gray{
 color: gray;
 }
 .pwdTipContent .degreeWeak , .pwdTipContent .degreeMiddle{
 color: red;
 }
 .pwdTipContent .el-icon-success{
 color:green;
 }
 .pwdTipContent .degreeStrong {
 color: green;
 }
 i.iWeak.normal, i.iMiddle.normal {
 background: red;
 }
 i.iWeak.active {
 background: green;
 }
 i.iMiddle.active {
 background: green;
 }
 i.iStrong.active {
 background: green;
 }
 b.active {
 color: red;
 }
 .degreeStrong {
 color: green;
 }

 .pwdTipContent dt i {
 width: 28px;
 height: 10px;
 display: inline-block;
 background-color: gray;
 margin-right: 10px;
 }

 .pwdTipContent {
 color: #61688a;
 position: absolute;
 min-width: 200px;
 padding: 7px 0 7px 15px;
 background: #fff;
 top: -147px;
 border: 1px solid #e4e7ed;
 border-radius: 4px;
 box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.4);
 font-size: 12px;
 }

 .pwdTipContent:after {
 width: 0;
 height: 0;
 overflow: hidden;
 content: "";
 }
 .pwdTipContent:after {
 position: absolute;
 bottom: -10px;
 left: 20px;
 border-top: 10px solid #fff;
 border-right: 10px dashed transparent;
 border-left: 10px dashed transparent;
 }
 .pwdTipContent dd, .pwdTipContent dt{
 text-align: left;
 }
</style>

2.2 页面中引用提示组件

VUE实现密码验证与提示功能

VUE实现密码验证与提示功能

VUE实现密码验证与提示功能

<template>
 <div style="position: absolute; top: 40%; left:40%">
 <el-row style="width: 300px;">
 <el-col :span="24">
 <el-input v-model="password" @focus.capture.native='changePasswordTip(true)' @blur.capture.native='changePasswordTip(false)' auto-complete="new-password" type="password" placeholder='请输入密码' ></el-input>
 <div style="position: absolute">
  <verify-pass-word-tip :password="password" :isShowTip = 'isShowTip'></verify-pass-word-tip>
 </div>
 </el-col>
 </el-row>
 </div>
</template>
<script>
 import verifyPassWordTip from './verifyPassWordTip'
 export default {
 name: "VerifyPassWord",
 components: {
 verifyPassWordTip
 },
 data() {
 return {
 password: '',
 isShowTip: false
 }
 },
 methods: {
 /**
 * 改变密码提示是否显示
 **/
 changePasswordTip(isShow) {
 if (isShow) {
  this.isShowTip = true;
 } else {
  this.isShowTip = false;
 }
 },
 }
 }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Add Formatted Data to a Spreadsheet
Jun 12 Javascript
浅说js变量
May 25 Javascript
select多选 multiple的使用示例
Jun 16 Javascript
JS+CSS实现滑动切换tab菜单效果
Aug 25 Javascript
JS实现自动变换的菜单效果代码
Sep 09 Javascript
javascript实现不同颜色Tab标签切换效果
Apr 27 Javascript
AngularJS动态生成div的ID源码解析
Aug 29 Javascript
移动web开发之touch事件实例详解
Jan 17 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
Jan 08 Javascript
vue简单练习 桌面时钟的实现代码实例
Sep 19 Javascript
Vue3为什么这么快
Sep 23 Javascript
JavaScript最完整的深浅拷贝实现方式详解
Feb 28 Javascript
VUE实现图片验证码功能
Nov 18 #Javascript
countUp.js实现数字滚动效果
Oct 18 #Javascript
Vue-cli3项目引入Typescript的实现方法
Oct 18 #Javascript
细述Javascript的加法运算符的具体使用
Oct 18 #Javascript
ElementUI之Message功能拓展详解
Oct 18 #Javascript
js实现简易计算器功能
Oct 18 #Javascript
JavaScript实现更换背景图片
Oct 18 #Javascript
You might like
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
2017/04/03 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
jquery easyui使用心得
2014/07/07 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
JavaScript验证知识整理
2017/03/24 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
Angular8路由守卫原理和使用方法
2019/08/29 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
django如何连接已存在数据的数据库
2018/08/14 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
365 Tickets英国:全球景点门票
2019/07/06 全球购物
大四本科生的自我评价
2013/12/30 职场文书
乔迁宴答谢词
2014/01/21 职场文书
八年级生物教学反思
2014/01/22 职场文书
装修设计师求职信
2014/02/26 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
科技节口号
2014/06/19 职场文书
技术员岗位职责范本
2015/04/11 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
七年级上册生物的课件
2019/08/07 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书