92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

密碼驗證 : 密碼強度驗證

2020-3-18    前端達人

密碼強度驗證

需求

首先我們需要知道需求是什么? 這很重要!



要知道 我們寫的一切邏輯都是建立在需求之上



當輸入框聚焦時提示密碼要求



當密碼符合要求時 隱藏提示 并給予反饋



密碼等級低時 提示密碼等級為低



密碼等級一般時 提示密碼等級為中



密碼等級高時 提示密碼等級為高



當密碼不符合要求時 重新打開提示



思考如何構建函數
通過上面的需求 你能想到的函數時什么?你能想到的邏輯又是什么?

首先 提示的顯示隱藏我們可以用事件綁定或者事件監聽來做

其次 我們需要利用正則來判斷密碼等級

當密碼等級為低時 顯示紅色

當密碼等級為中時 顯示黃色

當密碼等級為高時 顯示綠色

最后 根據密碼等級來渲染頁面 也就是反饋給用戶的樣式

建議 :

在這里 盡量把每個函數的功能區分好 構思好

不僅要讓自己能看懂 還要讓別人能看懂

這樣的代碼才是好的代碼 可讀性更好 可維護性更高


實現功能 實現需求

HTML結構

在提示盒子的內部寫3個div 不同等級給予不同顏色不同數量的提示

 密碼 : <input type="text" id="ipt">
    <p id="p">請輸入6-20位的帶有數字字母或者特殊符號的密碼</p>
    <div class="box">
        <span></span>
        <div></div>
        <div></div>
        <div></div>
    </div>


點擊查看原圖



不管樣式行為再怎么花里胡哨 也一定要先把結構里要出現的元素寫出來



CSS樣式

由于考慮到等級分為三種 所以給提示盒子分3中不同的class類名

每一個類名對應的子元素的樣式也不同

到js部分我們只需要操作class類名就可以了

   <style>
        *{
            margin : 0 ;
            padding : 0 ;
        }
        //提示盒子
        .box{
            position : absolute;
            top : 2px;
            left : 200px;
        }
        .box div,
        .box span{
            margin-right : 5px;
            width : 20px;
            height : 20px;
            float : left;
        }
        //低等級
        .box.low :nth-child(2){
            background : red;
        }
        //中等級
        .box.middle div{
            background : yellow;
        }
        .box.middle :last-child{
            background: #fff;
        }
        //高等級
        .box.high div{
            background : green;
        }
        //提示文字默認隱藏
        p{
            display : none;
        }
    </style>



20200315203557273.png

JS行為

 <script>
        //獲取需要操作的元素
        let ipt = document.getElementById('ipt');
        let p = document.getElementById('p');
        let div = document.getElementsByClassName('box')[0];
        var tip = false; //聚焦顯示提示的開關
        //添加聚焦事件
        ipt.addEventListener('focus' , () => {
            //由于存在用戶輸入正確的密碼失焦再操作的可能 所以需要驗證開關
            if(!tip) {
                p.style.display = 'block';
            }
            //默認選中文字 提升用戶體驗
            ipt.select();
        })
        //添加輸入時的事件
        ipt.addEventListener('input' , () => {
            //拿到用戶輸入的密碼字符串
            let str = ipt.value;
            //當密碼不符合要求時 要及時給予反饋 及時清除樣式
            if(str.length < 6 ||str.length > 20 || /[^(\da-zA-Z\_\#\@\$\^\%\*\&\!\~\+\-)]/.test(str) || str === "") {
                p.style.display = 'block';
                removeClass(div);
                div.children[0].innerHTML = "";
                tip = true;
                //如果不符合要求 就沒必要判斷等級了 直接結束判斷
                return false;
            }else{
                p.style.display = 'none';
            }
            //判斷密碼等級
            let res = level(str);
            //根據等級添加樣式
            randerLevel(res);
        })
        //判斷密碼等級函數
        function level (str) {
            let level = 0;
            //當用戶輸入的字符串符合一定規則 讓等級+1
            if(/\d+/.test(str)) {
                level ++;
            }
            if(/[a-zA-Z]+/.test(str)) {
                level ++;
            }
            if(/[\_\#\@\$\^\%\*\&\!\~\+\-]+/.test(str)) {
                level ++;
            }
            return level;
        }
        //添加樣式函數
        function randerLevel (level) {
            //在添加樣式前先清空樣式
            removeClass(div);
            div.children[0].innerHTML = "";
            //根據等級添加對應的類名
            switch (level) {
                case 1 :
                    div.children[0].innerHTML = '低';
                    //元素存在不止一個類名 用 += 更好
                    div.className += ' low';
                    break;
                case 2 :
                    div.children[0].innerHTML = '中';
                    div.className += ' middle';
                    break;
                case 3 :
                    div.children[0].innerHTML = '高';
                    div.className += ' high';
                    break;
            }
        }
        //去等級類名函數
        function removeClass(ele){
            let reg = /low|middle|high/g;
            if(reg.test(ele.className)) {
                //不要忘記把值賦回去 replace返回的是新字符串
                ele.className = ele.className.replace(reg , "");
            }
        }
    </script>

當密碼等級為低時 給予紅色反饋

2020031520385174.png


  • 當密碼等級為中時 給予黃色反饋
    20200315203928450.png
  • 當密碼等級為高時 給予綠色反饋
    20200315203952860.png
  • 當密碼長度太短或太長時 不給予顏色反饋 給予文字反饋
20200315204030964.png


————————————————
版權聲明:本文為CSDN博主「豆漿不好喝」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_45178648/article/details/104885417

日歷

鏈接

個人資料

藍藍設計的小編 http://m.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
亚洲丝袜一区在线| 亚洲性图久久| 三上悠亚激情av一区二区三区| 97在线资源站| 久久久国产一区二区三区四区小说| 亚洲色图.com| 99久久精品无码一区二区毛片| 在线视频二区| 久久精品久久精品| 久久91精品| 91丝袜在线| 亚洲第一论坛sis| 国产农村妇女毛片精品久久莱园子| 97影院在线午夜| 手机在线免费观看av| 国产91综合网| 欧美成人自拍视频| 精品日韩99亚洲| 欧美日韩亚洲一区二区三区在线| 欧美日韩午夜在线| 夜级特黄日本大片_在线| 日韩高清不卡一区二区三区| 国产91精品视频在线观看| 91亚洲精品视频在线观看| 国产视频一区在线观看一区免费| 成人精品国产免费网站| av免费看在线| 中文精品99久久国产香蕉| 99国产精品私拍| 亚洲成人精品av| 精品裸体bbb| 亚洲欧美日韩中文播放| 成人午夜又粗又硬又大| 日韩激情视频网站| 欧美在线国产| 欧美性大战久久久久| 亚洲精品一区二区在线观看| 亚洲国产成人av好男人在线观看| 欧美精品一区三区在线观看| 新狼窝色av性久久久久久| 亚洲欧洲日产国码av系列天堂| 国产精品久久久久久av福利软件| 午夜精品电影在线观看| 美美哒免费高清在线观看视频一区二区| 国产综合视频| 欧洲激情视频| 精品福利一区二区三区| 欧美伊人久久久久久午夜久久久久| 日韩精品二区| 国产精品123区| 欧美高清在线观看| 亚洲国产第一页| 神马电影网我不卡| 波多野结依一区| 亚洲精品v日韩精品| 国产亚洲精品激情久久| 精品视频一区二区三区| 欧美一区二区三区四区在线观看| 欧美性猛交xxxx黑人交| 久久精品国产一区二区三区| 久久久精品国产一区二区三区| 在线免费观看不卡av| 欧美多人乱p欧美4p久久| 欧美日韩国产综合视频在线| 精品裸体舞一区二区三区| 91精品免费久久久久久久久| 亚洲综合色在线| 五月激激激综合网色播| 欧美精品三级日韩久久| 4444欧美成人kkkk| 亚洲精品久久嫩草网站秘色| 在线丨暗呦小u女国产精品| 成人免费看片网站| 精品一区二区三区久久| 欧美在线国产精品| 97精品中文字幕| 精品亚洲一区二区三区在线观看| 欧美精品三级在线| 欧美一级一区| 国产69精品久久久久9| 天天综合色天天综合色h| 国产精品视频你懂的| 亚洲剧情一区二区| 国产一区在线观看视频| 欧美亚一区二区| 欧美午夜片在线免费观看| 日韩子在线观看| 国产精品人妖ts系列视频| 亚洲精品动漫100p| 91网站在线免费观看| 小黄鸭精品aⅴ导航网站入口| 国产一区二区中文| 欧美老妇交乱视频| 国产区高清在线| 波多野结衣中文字幕一区| 国产精品影音先锋| 久久国产精品无码网站| 国产精品成人av在线| 91国产高清在线| 欧美日韩成人精品| 亚洲国产精品一区制服丝袜| 7777kkk亚洲综合欧美网站| 女人色偷偷aa久久天堂| 欧美亚洲激情| av老司机在线观看| 91九色最新地址| 成人黄色影片在线| 寂寞少妇一区二区三区| 久久精品国产精品亚洲毛片| 免费高清不卡av| 欧美第一视频| 免费看黄色91| aa亚洲一区一区三区| 日本99精品| 国产在视频一区二区三区吞精| 精品一区二区三区中文字幕视频| 91精品在线麻豆| 久久久精品区| 国产视频精品在线| 国产亚洲欧美日韩日本| 欧美极品一区二区三区| 欧美有码视频| 久久久久国产精品www| 国产精品入口尤物| 日本成人在线视频网站| 九色综合狠狠综合久久| 日韩在线网址| 国产亚洲精品久久久| 最近2019年中文视频免费在线观看| 香蕉久久夜色精品国产更新时间| 日本高清视频在线播放| 岛国av一区二区在线在线观看| 国产精品99久久99久久久二8| 欧美国产专区| 国产亚洲永久域名| 青青草成人在线观看| 成人免费观看49www在线观看| 激情久久久久久久久久久久久久久久| 亚洲а∨天堂久久精品9966| 国产视频911| 亚洲成人av电影在线| 日本久久91av| 国产欧美欧洲在线观看| 日韩免费观看高清完整版| 久热这里只精品99re8久| 久久久久久久久久看片| 欧美激情欧美狂野欧美精品| 26uuu另类亚洲欧美日本一| 久热成人在线视频| 欧美精品中文字幕一区二区| 国内精品久久久久久野外| 国语自产精品视频在线看抢先版结局| 成人av在线播放| 国产精品羞羞答答xxdd| 久久久久久久一区| 国产69精品久久久| 国产精品swag| 色中色综合成人| 亚洲午夜在线电影| 69久久99精品久久久久婷婷| 国产一区国产二区国产三区| 欧美日韩成人| 久久人人视频| 日韩伦理一区二区三区av在线|