jQuery password strength checker

后端 未结 13 1998
遥遥无期
遥遥无期 2020-12-08 00:25

I\'m quite new to jQuery, and I\'ve written a simple function to check the strength of a password for each keypress.

The idea is that every time a user enters a char

13条回答
  •  萌比男神i
    2020-12-08 01:18

    best way is this

    function password_validate(txt) {
      var val1 = 0;
      var val2 = 0;
      var val3 = 0;
      var val4 = 0;
      var val5 = 0;
      var counter, color, result;
      var flag = false;
      if (txt.value.length <= 0) {
        counter = 0;
        color = "transparent";
        result = "";
      }
      if (txt.value.length < 8 & txt.value.length > 0) {
        counter = 20;
        color = "red";
        result = "Short";
      } else {
        document.getElementById(txt.id + "error").innerHTML = " ";
        txt.style.borderColor = "grey";
        var regex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{8,15}$/;
        //  document.getElementById("pass_veri").style.display="block";
        var fletter = /[a-z]/;
        if (fletter.test(txt.value)) {
          val1 = 20;
    
        } else {
          val1 = 0;
        }
        //macth special character
        var special_char = /[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]/;
        if (special_char.test(txt.value)) {
          val2 = 30;
        } else {
          val = 0;
        }
        /*capital_letter*/
        var cap_lett = /[A-Z]/;
        if (cap_lett.test(txt.value)) {
          val3 = 20;
        } else {
          val = 0;
        }
        /*one numeric*/
        var num = /[0-9]/;
        if (num.test(txt.value)) {
          val4 = 20;
        } else {
          val4 = 0;
        }
        /* 8-15 character*/
        var range = /^.{8,50}$/;
        if (range.test(txt.value)) {
          val5 = 10;
        } else {
          val5 = 0;
        }
        counter = val1 + val2 + val3 + val4 + val5;
    
        if (counter >= 30) {
          color = "skyblue";
          result = "Fair";
        }
        if (counter >= 50) {
          color = "gold";
          result = "Good";
        }
        if (counter >= 80) {
          color = "green";
          result = "Strong";
        }
        if (counter >= 90) {
          color = "green";
          result = "Very Strong";
        }
      }
      document.getElementById("prog").style.width = counter + "%";
      document.getElementById("prog").style.backgroundColor = color;
      document.getElementById("result").innerHTML = result;
      document.getElementById("result").style.color = color;
    }
    body {
      font-family: 'Rajdhani', sans-serif;
      background-color: #E4E4E4;
    }
    
    
    /* tooltip*/
    
    .hint {
      width: 258px;
      background: red;
      position: relative;
      -moz-border-radius: 10px;
      -webkit-border-radius: 10px;
      border-radius: 10px;
      position: absolute;
      left: 0px;
      border: 1px solid #CC9933;
      background-color: #FFFFCC;
      display: none;
      padding: 20px;
      font-size: 11px;
    }
    
    .hint:before {
      content: "";
      position: absolute;
      left: 100%;
      top: 24px;
      width: 0;
      height: 0;
      border-top: 17px solid transparent;
      border-bottom: 1px solid transparent;
      border-left: 22px solid #CC9933;
    }
    
    .hint:after {
      content: "";
      position: absolute;
      left: 100%;
      top: 26px;
      width: 0;
      height: 0;
      border-top: 14px solid transparent;
      border-bottom: 1px solid transparent;
      border-left: 20px solid #FFFFCC;
    }
    
    .parent {
      position: relative;
    }
    
    .progress {
      height: 7px;
    }
    
    #progres {
      display: block;
    }
    
    p {
      margin: 0px;
      font-weight: normal;
    }
    
    .form-control {
      width: none;
      margin-left: 260px;
      margin-top: 25px;
      width: 200px;
    }
    
    

提交回复
热议问题