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 相关文章推荐
iframe子页面与父页面在同域或不同域下的js通信
May 07 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
Jun 23 Javascript
jquery结合CSS使用validate实现漂亮的验证
Jan 29 Javascript
js实现顶部可折叠的菜单工具栏效果实例
May 09 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
Sep 04 Javascript
jquery表单验证插件validation使用方法详解
Jan 20 Javascript
深入理解ES6 Promise 扩展always方法
Sep 26 Javascript
Vue实战之vue登录验证的实现代码
Oct 31 Javascript
vue设置动态请求地址的例子
Nov 01 Javascript
Vue事件处理原理及过程详解
Mar 11 Javascript
webpack安装配置与常见使用过程详解(结合vue)
Jun 01 Javascript
小程序实现tab标签页
Nov 16 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
傻瓜化配置PHP环境――Appserv
2006/12/13 PHP
用PHP读取和编写XML DOM的实现代码
2011/02/03 PHP
10条PHP高级技巧[修正版]
2011/08/02 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
Ruby如何实现动态方法调用
2012/11/18 面试题
超市开学活动方案
2014/03/01 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python
关于的python五子棋的算法
2022/05/02 Python
Redis基本数据类型String常用操作命令
2022/06/01 Redis
python playwright之元素定位示例详解
2022/07/23 Python