亚洲av午夜福利精品一区人妖,亚洲乱码日产精品a级毛片久久,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://m.skdbbs.com

存檔

亚洲av午夜福利精品一区人妖,亚洲乱码日产精品a级毛片久久,91精品视频观看,青草青草久热精品视频在线观看
<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • 久久最新视频| 国产午夜精品美女视频明星a级 | 久久久久五月天| 亚洲欧美日韩区| 午夜视频久久久| 欧美在线视屏| 久久男人资源视频| 老色鬼精品视频在线观看播放| 米奇777超碰欧美日韩亚洲| 免费欧美日韩国产三级电影| 蜜桃av一区二区| 欧美国产精品日韩| 欧美日韩国产综合网| 欧美午夜不卡影院在线观看完整版免费| 欧美日韩一区二区在线观看| 国产精品久久久999| 国产精品久久国产愉拍| 国产一区二区三区电影在线观看| 伊人精品成人久久综合软件| 亚洲黄色高清| 亚洲精品欧美日韩| 亚洲视频碰碰| 久久精品中文| 欧美激情五月| 国产精品久久久久久av下载红粉 | 久久爱91午夜羞羞| 麻豆乱码国产一区二区三区| 欧美激情女人20p| 欧美日韩在线播放一区| 国产欧美日韩免费看aⅴ视频| 在线欧美福利| 这里只有精品在线播放| 欧美在线观看视频| 欧美岛国激情| 国产精品免费区二区三区观看| 国产字幕视频一区二区| 91久久国产自产拍夜夜嗨| 亚洲性图久久| 久久久国产精品一区二区中文 | 欧美劲爆第一页| 国产精品高潮视频| 黄色成人精品网站| 一区二区黄色| 久久久久久久综合日本| 欧美日本高清视频| 国产一区二区成人| 夜夜爽99久久国产综合精品女不卡| 欧美一区午夜精品| 欧美欧美午夜aⅴ在线观看| 国产视频在线一区二区| 日韩亚洲精品在线| 久久精品九九| 欧美午夜精品理论片a级按摩| 激情成人中文字幕| 亚洲一区二区欧美日韩| 免费日韩av片| 国产欧美日韩一级| 亚洲免费福利视频| 久久久国际精品| 国产精品国产三级国产aⅴ入口 | 日韩视频久久| 久久精品国产69国产精品亚洲 | 一区二区在线免费观看| 夜夜嗨av一区二区三区免费区| 久久福利资源站| 欧美日韩免费观看一区| 在线精品观看| 欧美尤物一区| 国产精品草莓在线免费观看| 亚洲福利视频免费观看| 性欧美1819性猛交| 欧美日韩一区精品| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美一二三视频| 欧美体内she精视频在线观看| 亚洲丰满在线| 久久精品国产99| 国产精品一区亚洲| 一本色道精品久久一区二区三区| 乱人伦精品视频在线观看| 国产日产精品一区二区三区四区的观看方式 | 久久精品国产精品亚洲精品| 欧美手机在线| 日韩视频不卡| 欧美国产一区视频在线观看 | 欧美天天影院| 亚洲精品一区二区三区四区高清| 久久一区欧美| 国内精品久久久久久久影视蜜臀 | 欧美日韩一区二区在线视频| 亚洲欧洲精品一区二区精品久久久| 久久九九国产| 国产亚洲欧洲一区高清在线观看| 亚洲综合色噜噜狠狠| 欧美系列电影免费观看| 99re66热这里只有精品3直播| 蜜桃精品一区二区三区| 伊人成年综合电影网| 久久久久网站| 国内精品久久久久久久影视蜜臀| 欧美一区二区免费观在线| 国产精品自在欧美一区| 亚洲欧美中文在线视频| 国产精品乱人伦中文| 亚洲女人天堂成人av在线| 国产精品狠色婷| 亚洲一区自拍| 国产精品区一区| 亚洲欧美在线看| 国产欧美一区二区三区国产幕精品| 亚洲欧美成人一区二区三区| 国产精品日日摸夜夜添夜夜av| 亚洲一区二区高清| 国产精品户外野外| 亚洲综合色激情五月| 国产精品亚洲综合| 欧美一区二区三区免费看| 国产日韩在线一区二区三区| 久久成人综合网| 激情国产一区| 女人香蕉久久**毛片精品| 亚洲国产婷婷香蕉久久久久久| 欧美寡妇偷汉性猛交| 日韩网站免费观看| 欧美视频中文字幕| 亚洲一本视频| 国产精品一区二区三区四区五区 | 欧美精品日韩一本| 亚洲视频碰碰| 国产精品嫩草影院一区二区| 亚洲欧美日韩成人高清在线一区| 国产精品自拍在线| 久久久久久久综合日本| 亚洲第一天堂av| 欧美日韩精品一二三区| 亚洲欧美中文另类| 激情视频一区二区三区| 欧美激情精品久久久久久| 亚洲一区二区在线免费观看视频 | 欧美四级剧情无删版影片| 亚洲欧美激情四射在线日 | 在线视频日本亚洲性| 国产精品手机在线| 久久久久久久999精品视频| 亚洲国产欧美日韩| 欧美视频一区二区三区在线观看 | 国产精品二区三区四区| 久久精品国产第一区二区三区最新章节 | 校园春色国产精品| 精品999成人| 欧美日本在线一区| 欧美一区二区三区久久精品茉莉花| 在线日韩av永久免费观看| 欧美日韩国产综合在线| 欧美一区二区三区在| 亚洲福利在线视频| 国产精品国产三级国产专区53| 久久久国产精品一区| 一区二区三区精品视频| 国产一区二区三区在线观看精品 | 国产精品美女久久久| 久久久美女艺术照精彩视频福利播放| 亚洲人成在线免费观看| 国产女主播一区二区三区| 免费日韩av片| 午夜日本精品| 亚洲精品三级| 国语精品中文字幕| 欧美网站在线观看| 久久这里有精品视频| 亚洲一区三区电影在线观看| 亚洲电影免费| 国产精品中文字幕在线观看| 欧美精品手机在线| 久久久国产精品一区二区中文| 一本一本a久久| 在线观看亚洲a| 国产精品久久久久久模特| 母乳一区在线观看| 欧美在线黄色| 一区二区高清在线观看| 亚洲国产黄色| 国产农村妇女精品一区二区| 欧美精品成人| 久久欧美肥婆一二区| 亚洲欧美一区二区原创| 99精品免费| 91久久嫩草影院一区二区| 国产亚洲欧美在线| 欧美视频日韩视频在线观看| 免费成人av资源网| 欧美制服第一页| 一区二区三区成人| 亚洲韩日在线| 国内精品嫩模av私拍在线观看| 国产精品久久久久久模特| 欧美日韩视频专区在线播放| 欧美成人精品在线视频| 久久久www| 欧美一站二站|