嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片

密碼驗證 : 密碼強度驗證

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

存檔

嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片
<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 激情综合网激情| 性欧美超级视频| 久久精品99国产精品日本| 亚洲国产成人精品久久久国产成人一区| 午夜一级久久| 久久人人爽人人爽| 亚洲欧洲综合另类在线| 欧美黄色aa电影| 国产精品久线观看视频| 亚洲欧美一级二级三级| 欧美成人tv| 亚洲主播在线| 136国产福利精品导航| 亚洲免费在线观看| 亚洲免费一级电影| 欧美日韩四区| 正在播放日韩| 蜜臀久久99精品久久久久久9| 欧美成人免费在线视频| 久久久欧美一区二区| 午夜精品福利一区二区蜜股av| 欧美高清视频一区| 午夜精品一区二区三区四区| 在线成人h网| 久久久夜色精品亚洲| 韩国av一区二区三区在线观看| 欧美国产精品劲爆| 在线精品国产欧美| 久久久999| 99国产精品国产精品毛片| 久久av老司机精品网站导航| 国产精品萝li| 久久久999精品视频| 欧美日韩性生活视频| 亚洲每日在线| 久久av二区| 国产精品日韩| 欧美伊人精品成人久久综合97| 亚洲欧洲99久久| 国产主播精品在线| 久久久久久香蕉网| 欧美激情亚洲另类| 日韩午夜三级在线| 欧美日韩在线视频一区| 中国成人亚色综合网站| 国产日韩精品入口| 久久久久久**毛片大全| 欧美国产日韩一区二区三区| 亚洲中字在线| 欧美成人午夜视频| 欧美亚洲日本国产| 久久夜色精品国产| 亚洲免费婷婷| 国产综合精品一区| 欧美日韩在线三级| 亚洲欧洲精品一区二区三区不卡 | 亚洲欧美日韩在线不卡| 久久精品夜夜夜夜久久| 在线视频欧美精品| 久久精品一区| 久久成人这里只有精品| 欧美日韩一本到| 亚洲国产99精品国自产| 午夜亚洲伦理| 欧美日韩一区二区三区高清| 性欧美大战久久久久久久免费观看 | 国产一区二区在线观看免费| 欧美大片第1页| 久久亚洲国产精品一区二区| 午夜精品视频在线观看一区二区| 在线观看中文字幕不卡| 国产精品亚洲精品| 欧美网站大全在线观看| 欧美三级网页| 亚洲欧美另类综合偷拍| 亚洲乱码国产乱码精品精可以看 | 亚洲一本视频| 欧美一区二区在线视频| 亚洲视频中文字幕| 亚洲女与黑人做爰| 国产亚洲欧美一区二区三区| 欧美日本一区二区视频在线观看| 欧美aⅴ99久久黑人专区| 欧美不卡激情三级在线观看| 亚洲精品在线电影| 亚洲欧美在线一区| 久久本道综合色狠狠五月| 久久亚洲不卡| 日韩亚洲欧美一区二区三区| 国产精品啊啊啊| 久久久精品一区| 欧美夫妇交换俱乐部在线观看| 最新国产成人av网站网址麻豆| 日韩一级网站| 久久久久久久久综合| 亚洲在线观看视频网站| 久久久久久久一区二区三区| 亚洲欧美国产日韩天堂区| 亚洲国产精品视频一区| 亚洲一区二区三区精品在线观看| 欧美精品一区二区三区蜜桃 | 国产欧美日韩一区二区三区在线观看 | 亚洲视频在线看| 亚洲黄一区二区| 韩日成人在线| 亚洲欧美日韩另类| 亚洲日本成人| 亚洲毛片在线免费观看| 欧美高清在线观看| 欧美国产激情| 狠狠色狠狠色综合日日小说| 香蕉成人伊视频在线观看| 亚洲一区激情| 99视频精品在线| 午夜精品久久久久久久久久久久 | 欧美视频在线观看| 一区二区在线视频| 欧美激情一区二区三区蜜桃视频| 欧美69wwwcom| 免费看黄裸体一级大秀欧美| 欧美成人高清| 亚洲国产老妈| 日韩视频一区二区在线观看| 在线电影一区| 日韩亚洲欧美一区二区三区| 亚洲精品视频在线观看免费| 日韩视频―中文字幕| 亚洲欧洲综合另类| 国产精品亚洲一区二区三区在线| 麻豆精品精华液| 亚洲视频在线观看免费| 欧美一级成年大片在线观看| 欧美劲爆第一页| 亚洲欧美激情诱惑| 久久精品国产第一区二区三区最新章节 | 久久经典综合| 裸体一区二区| 国产一区二区三区不卡在线观看| 久久久不卡网国产精品一区| 蜜臀久久99精品久久久久久9 | 欧美成人综合| 一区二区国产在线观看| 久久在线精品| 激情久久影院| 亚洲欧美日韩中文在线制服| 亚洲欧洲一区二区在线播放| 久久成人精品| 欧美亚洲综合网| 欧美屁股在线| 亚洲人成在线播放| 亚洲精品国产欧美| 老牛嫩草一区二区三区日本| 久久久久久色| 国产一区视频在线看| 美女尤物久久精品| 久久久青草婷婷精品综合日韩| 国产亚洲精品久久久久婷婷瑜伽| 亚洲永久精品大片| 欧美日韩精品久久久| 亚洲激情第一页| 国产精品美女久久久久久2018| 欧美亚洲视频在线看网址| 欧美日本韩国| 国产深夜精品| 美国成人直播| 一区二区免费在线观看| 美女被久久久| 亚洲精一区二区三区| 国产精品啊v在线| 亚洲欧美激情视频在线观看一区二区三区 | 欧美日韩亚洲91| 久久久久久伊人| 亚洲国产va精品久久久不卡综合| 久久三级福利| 性欧美办公室18xxxxhd| 国产农村妇女毛片精品久久莱园子 | 欧美一区二区三区视频| 亚洲第一在线综合网站| 欧美国产视频在线观看| 日韩午夜激情av| 久久九九热免费视频| 欧美精品一区二区在线观看| 欧美一级二级三级蜜桃| 韩国三级在线一区| 亚洲欧美日韩精品久久久| 亚洲国产高清视频| 狠狠色狠狠色综合日日tαg| 亚洲欧洲久久| 欧美jizz19hd性欧美| 欧美在线看片| 国产欧美一区二区精品性色| 亚洲精品欧洲| 男女av一区三区二区色多| 欧美综合第一页| 欧美一区亚洲一区| 狠狠色丁香婷综合久久| 国产日韩欧美在线视频观看| 欧美日本一道本| 国产精品swag| 国产精品美腿一区在线看|