国产黄色免费网站_久久天天做天天爱综合色_精品国产一区久久久_成人黄色激情网站_久久成人在线视频_美女一区二区在线观看_亚洲精品免费一区亚洲精品免费精品一区 _91精品国产综合久久精品麻豆

密碼驗證 : 密碼強度驗證

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.newchinaweekly.com

存檔

99久久精品免费看国产交换| 欧美丝袜自拍制服另类| 岛国av在线不卡| 日韩欧美激情在线| 最新精品国偷自产在线| 欧美三级情趣内衣| 狂野欧美性猛交xxxx巴西| 国产+成+人+亚洲欧洲自线| 国产精品久久久久一区二区三区 | 久久高清免费视频| 国内毛片毛片毛片毛片| 国产污视频在线观看| 一级片在线观看视频| 精品视频二区三区| 免费三级欧美电影| 美女91在线| 天堂网av成人| 日韩一区精品字幕| 国产精品天天摸av网| 91精品国产品国语在线不卡| 国内精久久久久久久久久人| 久久久久国产精品视频| 国产区二区三区| 国产高潮国产高潮久久久91 | 欧美性猛交乱大交| 女人十八岁毛片| 国产精品视频流白浆免费视频| 欧美日本韩国一区二区| 福利视频亚洲| 黑丝一区二区| 日本一区免费视频| 亚洲第一中文字幕在线观看| 欧美中文字幕在线| 日韩成人三级视频| 99视频在线免费播放| 亚洲av成人无码久久精品 | 国产无遮挡裸体视频在线观看| 国产一区二区精品久| 欧美综合另类| 成人永久看片免费视频天堂| 欧美色男人天堂| 91高清视频免费观看| 亚洲欧美久久234| 亚洲理论电影在线观看| 在线观看免费黄色网址| 色偷偷在线观看| 免费福利在线观看| 中文字幕亚洲影视| 久久精品一区二区三区四区| 亚洲色图欧洲色图婷婷| 国产午夜精品全部视频播放| 99高清视频有精品视频| 亚洲男人天堂2021| 性囗交免费视频观看| 国产强被迫伦姧在线观看无码| 国产精美视频| 一区二区中文字幕在线观看| 国产不卡视频一区| 亚洲第一区中文99精品| 久久本道综合色狠狠五月| 免费无码一区二区三区| 四虎影视最新地址| 成人黄色免费电影| 欧美成人毛片| 亚洲先锋影音| 黄一区二区三区| 91精品国产色综合久久不卡蜜臀| 国产精品视频内| xxxx国产视频| 四虎.com| 樱桃视频成人在线观看| 久久99热国产| 日韩电影中文字幕| 亚洲日本理论电影| 日韩高清精品免费观看| 午夜影院韩国伦理在线| 国产91精品对白在线播放| 国产精品欧美久久久久无广告| 欧美另类在线播放| 杨幂毛片午夜性生毛片| 隣の若妻さん波多野结衣| jizzjizz在线| 亚洲一区网址| 亚洲欧洲国产日韩| 青草青草久热精品视频在线观看| 91亚洲精品久久久蜜桃借种| 污视频网站免费观看| 欧美巨大xxxx做受沙滩| 日本美女一区二区三区| 日韩精品高清在线| 丁香花在线影院观看在线播放 | 日本一区二区三区在线免费观看| 男人的天堂视频网站| 三上悠亚一区二区| 91丨porny丨国产入口| 久久成人人人人精品欧| 樱花草www在线| 国产人成高清视频观看| 成人av婷婷| 一区二区三区免费网站| 99久久久精品免费观看国产| 玖玖爱这里只有精品| 中出在线观看| 久久最新视频| 中文字幕视频在线免费欧美日韩综合在线看| 欧美这里只有精品| 性猛交xxxx| 日韩欧美在线番号| 影音先锋久久资源网| 亚洲精品日韩综合观看成人91| 国产精品一区二区久久国产| 人人干在线观看| 宅男宅女性影片资源在线1| 国产欧美日韩综合一区在线播放| 日韩福利在线播放| 五月婷婷六月丁香激情| 尤物在线观看视频| 99久久精品网站| 亚洲高清久久网| 一区二区三区 日韩| 免费在线观看a| 伊人久久大香线| 亚洲欧美激情另类校园| 亚洲最大天堂网| www.嫩草免费在线观看| 好看的亚洲午夜视频在线| 在线播放精品一区二区三区| 在线观看一区二区三区视频| 成人淫片免费视频95视频| 亚洲精品在线二区| 久久人人爽人人爽爽久久| 亚洲久久久久久久| 国产一二三在线观看| 99久久er热在这里只有精品66| 国产有码一区二区| 中文字幕精品无码一区二区| 亚洲美女久久精品| 亚洲一二三四在线观看| 中文字幕不卡每日更新1区2区| 人妻中文字幕一区| 亚洲69av| 精品偷拍一区二区三区在线看| 亚洲熟女乱综合一区二区| jizzjizz亚洲中国少妇| 国产91精品入口| 国产高清在线一区| 精品在线观看一区| 老司机在线视频二区| 国产精品久久久久久久久久久免费看 | 国产91av视频在线观看| 欧美三级黄视频| 亚洲午夜精品一区二区国产| 久久久成人的性感天堂| 影音先锋男人资源在线观看| 日本孕妇大胆孕交无码| 亚洲夂夂婷婷色拍ww47| 丰满的少妇愉情hd高清果冻传媒| 黄色片子免费| 先锋影音国产精品| 亚洲人成啪啪网站| 91精品国自产在线| av在线资源| 在线亚洲高清视频| 亚洲午夜精品一区二区三区| 亚洲精品乱码久久久久久蜜桃动漫| 外国成人免费视频| 97视频免费看| 亚洲综合精品国产一区二区三区| 哺乳一区二区三区中文视频| 日韩av在线免费看| 国产精品视频看看| 88xx成人免费观看视频库| 制服视频三区第一页精品| 在线观看成人动漫| 欧美xxxbbb| 欧美美女黄视频| 久久只有这里有精品| 女人让男人操自己视频在线观看| 欧美在线观看视频一区二区| avtt中文字幕| 国产蜜臀在线| 亚洲国产精品成人久久综合一区| 一区二区三区欧美在线| 小次郎av收藏家| 久久天天做天天爱综合色| 中文字幕一区二区三区四区五区六区| 草草浮力影院| 91色porny蝌蚪| av动漫在线免费观看| 超碰在线电影| 亚洲男人电影天堂| 国产精品久久久久久9999| 久色国产在线| 亚洲国产精品va在线看黑人| 青娱乐国产在线视频| 香蕉久久精品| 国产精品福利久久久| 少妇一级淫片免费放中国 | 亚洲国产一区二区三区青草影视| 青娱乐国产精品视频|