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://www.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
日本精品一区二区三区在线| 亚洲精品97久久| 国产精品丝袜久久久久久不卡| 久久综合色88| 韩国三级日本三级少妇99| 国产精品色婷婷视频| 午夜欧美不卡精品aaaaa| 一本色道久久88综合日韩精品| 亚洲女人被黑人巨大进入| 夜夜嗨av一区二区三区免费区| 亚洲成**性毛茸茸| 永久免费看mv网站入口亚洲| 琪琪第一精品导航| 中文字幕精品影院| 日韩经典一区二区三区| 欧美怡红院视频一区二区三区| 日韩欧美一区二区三区久久| 日韩av网站大全| 国内揄拍国内精品| 51午夜精品视频| 97色在线视频观看| 日韩性生活视频| 中文字幕精品av| 成人网在线观看| 国产精品嫩草视频| 国产精品普通话| yw.139尤物在线精品视频| 91精品久久久久久久久| 亚洲一区二区三区成人在线视频精品| 亚洲免费影视第一页| 欧美成人亚洲成人日韩成人| 中文字幕不卡在线视频极品| 亚洲日韩第一页| 色婷婷**av毛片一区| 91精品国产乱码久久久久久蜜臀| 亚洲国产97在线精品一区| 成人午夜在线观看| 久久综合伊人77777尤物| 日韩国产精品亚洲а∨天堂免| 欧美日韩高清区| 亚洲精品国产精品国自产观看浪潮| 亚洲欧美中文日韩在线v日本| 国产小视频国产精品| 黄色成人在线播放| 国产成人97精品免费看片| 亚洲精品国偷自产在线99热| 国产99久久精品一区二区永久免费| 亚洲综合在线做性| 亚洲第一网中文字幕| 91精品视频在线免费观看| 久久夜精品香蕉| 国产v综合v亚洲欧美久久| 国产午夜精品全部视频播放| 国产精品丝袜白浆摸在线| 欧美性xxxx18| 亚洲精品短视频| 2019中文字幕免费视频| 欧美大肥婆大肥bbbbb| 亚洲男人av在线| 亚洲午夜激情免费视频| 国产精品视频色| 精品日韩美女的视频高清| 亚洲精品一区二区三区不| 91欧美激情另类亚洲| 91香蕉嫩草神马影院在线观看| 国产精品热视频| 亚洲国产精品成人一区二区| 成人a免费视频| 欧美亚洲另类激情另类| 亚洲一区二区三区视频| 国产精品福利在线| 免费av在线一区| 久久久久久久久久久91| 日日狠狠久久偷偷四色综合免费| 激情亚洲一区二区三区四区| 69av在线视频| 日韩精品在线观| 国内精品一区二区三区四区| 久久69精品久久久久久久电影好| 国产精品自产拍在线观| 亚洲色图美腿丝袜| 国产精品美女主播| 美女啪啪无遮挡免费久久网站| 日本国产高清不卡| 秋霞成人午夜鲁丝一区二区三区| 欧美性xxxx极品hd欧美风情| 中文字幕一精品亚洲无线一区| 日韩成人小视频| 欧美最猛性xxxxx(亚洲精品)| 亚洲欧美www| 色综合天天综合网国产成人网| 国产精品中文在线| 日韩欧亚中文在线| 美女撒尿一区二区三区| 色噜噜国产精品视频一区二区| 这里精品视频免费| 爱福利视频一区| 国产成人一区二区在线| 亚洲精品视频在线观看视频| 亚洲乱亚洲乱妇无码| 国产激情久久久久| 精品视频在线播放免| 国产精品2018| 国产成人久久精品| 亚洲最大成人免费视频| 日韩欧美国产一区二区| 韩国精品美女www爽爽爽视频| 亚洲综合在线中文字幕| 日本免费久久高清视频| 国产精品永久免费视频| 久久免费精品日本久久中文字幕| 亚洲一区二区三区在线视频| 精品国产一区二区三区久久久狼| 亚洲欧美日韩中文在线制服| 日韩av成人在线观看| 精品自拍视频在线观看| 日韩午夜在线视频| 国产精品扒开腿爽爽爽视频| 欧美一级在线播放| 97在线看福利| 欧美一级免费视频| 国内精品模特av私拍在线观看| 国产免费观看久久黄| 国产精品草莓在线免费观看| 欧美人交a欧美精品| 欧美黑人国产人伦爽爽爽| 色噜噜狠狠色综合网图区| 主播福利视频一区| 欧美xxxx综合视频| 狠狠躁18三区二区一区| 久久天天躁狠狠躁老女人| 成人久久18免费网站图片| 26uuu国产精品视频| 国产免费一区二区三区在线观看| wwwwwwww亚洲| 日韩电影在线观看免费| 欧美一级大片在线观看| 日韩一级裸体免费视频| 91九色综合久久| 奇米4444一区二区三区| 国产一区私人高清影院| 中文在线不卡视频| 精品福利视频导航| 亚洲网站在线观看| 精品无人区太爽高潮在线播放| 亚洲精品成人久久久| 欧美特黄级在线| 欧美日韩性视频在线| 欧美日韩精品国产| www.亚洲一区| 日韩欧美在线视频观看| 97精品国产97久久久久久免费| 中文字幕亚洲欧美一区二区三区| 欧美香蕉大胸在线视频观看| 国产网站欧美日韩免费精品在线观看| 日韩av在线免费观看| 成人免费网站在线观看| 日韩美女免费观看| 亚洲sss综合天堂久久| 日产日韩在线亚洲欧美| 亚洲高清色综合| 欧美性资源免费| 国产精品久久久久91| 欧美黑人国产人伦爽爽爽|