<thead id="kdfuf"><font id="kdfuf"></font></thead>
<samp id="kdfuf"></samp>
    <nav id="kdfuf"><strong id="kdfuf"></strong></nav>
      中文字幕无码一区二区三区在线,久久精品人人做人人爽,国产一级内射无挡观看,十八禁在线黄色网站,日韩欧美国产另类久久久精品 ,少妇人妻偷人精品一区二区,久久午夜视频,亚洲春色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.tuitetiyu.cn

      存檔

      主站蜘蛛池模板: 人妻蜜臀久久av不卡| 蕉岭县| 欧美视频三区| 欧美人禽杂交狂配荷兰a片| 美女洗澡把胸和屁股扒开给别人看| 一本大道色卡1卡2卡3| 胯下粗长挺进人妻体内电影| 亚洲国产精品综合久久2007| 女人扒开屁股让男人桶| 免费黄色大全一区二区三区| 欲色欲色天天天www| 国产精品va在线观看无码不卡| 增城市| 亭亭玉立国色天香四月天| 大桥未久亚洲无AV码在线| 视频精品全部免费品全正版 | 亚洲第一精品精品无码久久 | 肇州县| 中国人妻与老外黑人| 武邑县| 中文无码丫丫私人影院视频| 亚洲av伦理一区二区| 国产亚洲制服在线中文字幕| 亚洲精品电影院| 久久亚洲AV秘 无码久久| 精品不卡一区二区| 欧美日韩国产免费一区二区三区| 久久精品国产欧美成人| 医院人妻闷声隔着帘子被中出| 欧美人与动zozo欧美人z0| 国产乱子经典视频在线观看| 一个人看的www免费视频在线观看 国产免费不卡v片在线观看 | 国产美女一级A作爱在| 马龙县| A级毛片无码免费久久真人软件 | 秋霞鲁丝片Av无码少妇| 激情文学小说区另类小说同性| 亚洲欧洲中文日韩久久av乱码| 免费欧美亚洲三级片中文字幕| 久9视频这里只有国产中文精品8 | 国产小呦泬泬99精品|