嫩草影院久久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://m.sdgs6788.com

存檔

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

        • 欧美精品久久久久久久久老牛影院| 国产精品久久久久毛片软件| 欧美成人免费全部观看天天性色| 久久久精品午夜少妇| 亚洲欧美一区二区原创| 午夜精品网站| 久久中文字幕导航| 欧美激情精品久久久六区热门 | 99这里只有精品| 999在线观看精品免费不卡网站| 亚洲日韩成人| 欧美影院成人| 亚洲狼人综合| 亚洲欧美日韩精品一区二区| 欧美中文字幕| 欧美大片免费| 亚洲影院污污.| 久久婷婷成人综合色| 欧美国产一区在线| 国产裸体写真av一区二区| 伊人久久av导航| 亚洲少妇自拍| 欧美成人免费全部观看天天性色| 一本色道久久综合亚洲精品按摩 | 亚洲天堂视频在线观看| 欧美一二三区在线观看| 久久人人超碰| 久久精品免费电影| 久久嫩草精品久久久精品一| 久久国产精品久久久久久久久久 | 亚洲最黄网站| 久久精品亚洲热| 欧美1区2区视频| 国产精品视频免费观看www| 亚洲电影免费观看高清完整版| 在线一区免费观看| 欧美va亚洲va国产综合| 亚洲欧美在线x视频| 欧美日本在线| 亚洲精品孕妇| 欧美黄色影院| 久久岛国电影| 国产午夜精品一区二区三区欧美 | 欧美视频日韩视频在线观看| 国内精品久久国产| 亚洲视频在线观看视频| 欧美国产日韩免费| 久久精品在线播放| 国产一区二区高清不卡| 午夜精品理论片| 在线综合欧美| 国产精品久久久久一区二区三区| 日韩视频不卡| 亚洲欧洲三级电影| 免费成人高清在线视频| 亚洲国产精品一区制服丝袜| 久久夜色精品国产欧美乱| 午夜精品久久久久久久99热浪潮| 亚洲精品美女免费| 欧美四级电影网站| 一区二区三区精品视频| 亚洲欧洲一区二区在线播放| 欧美 日韩 国产 一区| 91久久极品少妇xxxxⅹ软件| 欧美韩日视频| 欧美日韩国产一中文字不卡| 一本色道久久加勒比精品| 亚洲美女视频| 国产精品久久久久aaaa九色| 蜜桃av噜噜一区| 亚洲国产成人不卡| 久久亚洲风情| 91久久久久久久久| 亚洲第一综合天堂另类专| 欧美电影免费网站| 亚洲视频一区在线| 性色av香蕉一区二区| 在线国产精品播放| 最新日韩中文字幕| 国产精品久久久久毛片软件| 久久午夜色播影院免费高清| 蜜臀av国产精品久久久久| 一本色道久久88综合日韩精品| 日韩一级精品| 黑人巨大精品欧美黑白配亚洲| 亚洲电影av在线| 国产精品久久久久久久久借妻| 久久久久久久久蜜桃| 免费一级欧美在线大片| 亚洲尤物视频网| 久久亚洲视频| 亚洲专区一区| 久久综合国产精品| 亚洲一区二区日本| 欧美在线视频全部完| 最新国产成人在线观看| 欧美久久婷婷综合色| 欧美日韩三级电影在线| 久久午夜色播影院免费高清| 欧美视频官网| 亚洲第一主播视频| 国产欧美一区二区白浆黑人| 亚洲激情网址| 在线欧美日韩国产| 亚洲欧美日韩精品久久奇米色影视 | 香蕉久久久久久久av网站| 久久综合久色欧美综合狠狠 | 亚洲一区二区在线播放| 亚洲第一精品夜夜躁人人爽| 亚洲神马久久| 亚洲九九九在线观看| 久久精品免费电影| 欧美综合国产| 国产精品久久久久久av福利软件| 欧美激情第二页| 国产综合色产在线精品| 9国产精品视频| 99视频国产精品免费观看| 美女日韩欧美| 免费在线观看日韩欧美| 国产在线精品一区二区中文| 亚洲午夜免费视频| 亚洲天堂免费在线观看视频| 欧美性大战久久久久| 亚洲网站视频福利| 亚洲综合导航| 日韩五码在线| 久久久在线视频| 久久精品亚洲一区二区| 欧美午夜激情小视频| 亚洲九九爱视频| 亚洲精品视频二区| 欧美韩日精品| 亚洲国产精品视频| 亚洲黄色成人| 欧美国产精品专区| 亚洲激情中文1区| 亚洲美女区一区| 欧美激情综合在线| 亚洲精品三级| 一区二区三区四区国产精品| 欧美区日韩区| 一区二区免费在线观看| 亚洲在线黄色| 国产日韩一区二区三区在线播放 | 裸体素人女欧美日韩| 狠狠入ady亚洲精品| 久久漫画官网| 亚洲第一偷拍| 亚洲视频在线一区| 欧美午夜精品理论片a级按摩 | 国产欧美日本一区二区三区| 亚洲一区综合| 久久亚洲图片| 亚洲精品一区二区三| 欧美区日韩区| 国产一区视频在线看| 日韩一级黄色片| 欧美视频免费在线观看| 欧美亚洲一级| 亚洲国产精品激情在线观看| 一区二区欧美精品| 国产日韩欧美a| 美国成人毛片| 中日韩高清电影网| 久久精品亚洲一区二区三区浴池 | 亚洲区国产区| 国产精品美女xx| 久久久久成人网| 亚洲美女在线看| 久久色在线播放| 亚洲乱码精品一二三四区日韩在线| 国产精品vvv| 理论片一区二区在线| 一本色道久久综合亚洲91| 久久久国产精彩视频美女艺术照福利| 亚洲第一福利在线观看| 欧美视频1区| 久热成人在线视频| 亚洲一区精品在线| 亚洲国产欧美久久| 久久精品亚洲精品| 亚洲私人黄色宅男| 亚洲激情成人| 国产一区导航| 国产精品福利网站| 欧美激情综合色综合啪啪| 久久久久久久一区二区三区| 国产在线乱码一区二区三区| 欧美午夜精品理论片a级大开眼界| 在线一区二区三区做爰视频网站| 欧美a级理论片| 久久岛国电影| 亚洲一级二级| 亚洲欧洲视频在线| 狠狠色狠狠色综合| 国产欧美日韩精品a在线观看| 欧美高清在线一区| 巨乳诱惑日韩免费av| 久久成人一区二区|