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 页面中引用提示组件

<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>

VUE 密码验证与提示的更多相关文章

  1. vue Element验证input提示

    <el-form-item prop="userName" class="userName_color"> <b>详细地址<i c ...

  2. vb6-很简单的配置密码验证提示

    '很简单的配置密码验证提示 Dim add As String add = Trim(InputBox("请输入配置密码", "报表配置")) If add = ...

  3. 【WCF】Silverlight+wcf+自定义用户名密码验证

    本文摘自 http://www.cnblogs.com/virusswb/archive/2010/01/26/1656543.html 在昨天的博文Silverlight3+wcf+在不使用证书的情 ...

  4. sshpass: 用于非交互的ssh 密码验证

    ssh登陆不能在命令行中指定密码,也不能以shell中随处可见的,sshpass 的出现,解决了这一问题.它允许你用 -p 参数指定明文密码,然后直接登录远程服务器. 它支持密码从命令行,文件,环境变 ...

  5. 如何在主Form出现之前,弹出密码验证From,Cancel就退出程序,Ok后密码正确才出现主Form

    如何在主Form出现之前,弹出密码验证From,Cancel就退出程序,Ok后密码正确才出现主Form本文地址 :CodeGo.net/5175478/ ----------------------- ...

  6. 【转】sshpass-Linux命令之非交互SSH密码验证

      sshpass-Linux命令之非交互SSH密码验证 ssh登陆不能在命令行中指定密码.sshpass的出现,解决了这一问题.sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次 ...

  7. 第一百五十节,封装库--JavaScript,表单验证--密码验证

    封装库--JavaScript,表单验证--密码验证 效果图 html <div id="reg"> <h2 class="tuo">& ...

  8. Shiro自定义realm实现密码验证及登录、密码加密注册、修改密码的验证

    一:先从登录开始,直接看代码 @RequestMapping(value="dologin",method = {RequestMethod.GET, RequestMethod. ...

  9. Python实现三次密码验证

    需求:Python实现三次密码验证,每次验证结果需要提示,三次验证不通过需要单独提示 代码如下: user = '张无忌' password = '12345678' confirm_flag = F ...

随机推荐

  1. luogu 1640 连续攻击游戏

    二分图匹配,将需要进行的编号(1-10000)和物件进行匹配,而非编号之间,编号对应物品 #include<bits/stdc++.h> using namespace std; ; ; ...

  2. Docker(二)搭建和使用Docker

    摘自 https://mp.weixin.qq.com/s/E9tqhe00EjfV8y1pqWkZfw 一.Docker的架构 Docker使用C/S结构,即客户端/服务器体系结构.Docker客户 ...

  3. Coursera, Machine Learning, notes

      Basic theory (i) Supervised learning (parametric/non-parametric algorithms, support vector machine ...

  4. python 小数据池,is and "==",decode ,encode

    一:小数据池 1.python运行中的缓存: 2.目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 3.python 缓存数据:缓存:int, str, bool.         ...

  5. bae64编码

    data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJb ...

  6. MySQL语法错误

    [2017-02-18 15:53:44] [42000][1064] You have an error in your SQL syntax; check the manual that corr ...

  7. L3-1 二叉搜索树的结构 (30 分)

    讲解的很不错的链接:https://blog.csdn.net/chudongfang2015/article/details/79446477#commentBox 题目链接:https://pin ...

  8. 判断GPS是否开启&转到设置GPS界面

    /** * 判断GPS是否开启,GPS或者AGPS开启一个就认为是开启的 * @param context * @return true 表示开启 */ public static final boo ...

  9. MySQL创建数据库指定字符集

    CREATE DATABASE IF NOT EXISTS dbname DEFAULT CHARSET utf8;

  10. ORACLE数据库,数据量大,转移数据到备份表语句

    INSERT INTO TEMP_BUS_TRAVEL_INFO ( SELECT * FROM BUS_TRAVEL_INFO t ') SELECT COUNT(*) FROM TEMP_BUS_ ...