Skip to content
Advertisement

Password validation in a modal javascript

I am trying to check if two passwords (password1 and password2) in the input fields are the same. If I click the button there is automatically a text which is not in the corresponding condition of the button. I am trying to fix to display a text when – 1) Checking of empty password field. 2) minimum password length validation. 3) maximum length of password validation. https://jsfiddle.net/chrismontage/onh51g93/4/

function verifyPassword() {
  var pw1 = document.getElementById("password1").value;
  var pw2 = document.getElementById("password2").value;

  // Get the modal
  var modal = document.getElementById("myModal");

  // Get the button that opens the modal
  var btn1 = document.getElementById("myBtn");

  var confirm = document.getElementById("confirm");

  // Get the <span> element that closes the modal
  var span = document.getElementsByClassName("close")[0];


  btn1.onclick = function() {
    modal.style.display = "block";

    //check empty password field

    if (pw1 == "") {
      document.getElementById("message1").innerHTML = "*Please put your new password!";
      return false;
    }

    //minimum password length validation
    if (pw1.length < 8) {
      document.getElementById("message1").innerHTML = "**Password length must be atleast 8 characters";
      return false;
    }

    //maximum length of password validation
    if (pw1.length > 15) {
      document.getElementById("message1").innerHTML = "*Password length must not exceed 15 characters";
      return false;
    } else {
      if (pw1 == pw2) {
        document.getElementById("message1").innerHTML = "Passwords match!";
      } else {
        document.getElementById("message1").innerHTML = "Passwords not match!";
      }
    }

  }

  confirm.onclick = function() {
    modal.style.display = "none";
  }

  // When the user clicks on <span> (x), close the modal
  span.onclick = function() {
    modal.style.display = "none";
  }

  // When the user clicks anywhere outside of the modal, close it
  window.onclick = function(event) {
    if (event.target == modal) {
      modal.style.display = "none";
    }
  }

}
/* The Modal (background) */

.modal {
  display: none;
  /* Hidden by default */
  position: fixed;
  /* Stay in place */
  z-index: 1;
  /* Sit on top */
  padding-top: 100px;
  /* Location of the box */
  left: 0;
  top: 0;
  width: 100%;
  /* Full width */
  height: 100%;
  /* Full height */
  overflow: auto;
  /* Enable scroll if needed */
  background-color: rgb(0, 0, 0);
  /* Fallback color */
  background-color: rgba(0, 0, 0, 0.4);
  /* Black w/ opacity */
}


/* Modal Content */

.modal-content {
  position: relative;
  background-color: #fefefe;
  margin: auto;
  padding: 0;
  border: 1px solid #888;
  max-width: 40%;
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  -webkit-animation-name: animatetop;
  -webkit-animation-duration: 0.4s;
  animation-name: animatetop;
  animation-duration: 0.4s
}


/* Add Animation */

@-webkit-keyframes animatetop {
  from {
    top: -300px;
    opacity: 0
  }
  to {
    top: 0;
    opacity: 1
  }
}

@keyframes animatetop {
  from {
    top: -300px;
    opacity: 0
  }
  to {
    top: 0;
    opacity: 1
  }
}


/* The Close Button */

.close {
  color: white;
  float: right;
  font-size: 28px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: $color5;
  text-decoration: none;
  cursor: pointer;
}

.modal-header {
  background-color: $color1;
  color: white;
  text-align: center;
}

.modal-header h2 {
  color: $color1;
  text-align: center;
}

.modal-body {
  padding: 2px 16px;
}

.modal-body h4 {
  font-family: $font1;
  font-weight: normal;
  color: $color4;
  font-size: 20px;
}

.modal-footer {
  padding: 2px 16px;
  color: white;
}

.modal-footer .btn {
  background-color: $color1;
  font-family: $font1;
  font-weight: normal;
  color: $color3;
}

.modal-footer .btn:hover {
  color: $color5;
}
<label for="password">New Password</label>
<input type="password" class="input" id="password1">
<label for="cnfm-password">Confirm Pasword</label>
<input type="password" class="input" id="password2">
<input onclick="verifyPassword()" type="submit" value="Save Changes" class="btn" id="myBtn">

<!-- The Modal -->
<div id="myModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <div class="modal-header">
      <img src="/images/logo.png" alt="SAMPLE" width="120" class="mx-auto">
      <span class="close">&times;</span>
    </div>

    <div class="modal-body">
      <h4 class="text-center"><span id="message1"></span></h4>
    </div>
    <div class="modal-footer mx-auto">
      <button class="btn" id="confirm">Okay</button>

    </div>
  </div>
</div>

Advertisement

Answer

you have to fetch the password input value in the button click listener function.

function verifyPassword(){
    var pw1 = document.getElementById("password1");
    var pw2 = document.getElementById("password2");

    // Get the modal
    var modal = document.getElementById("myModal");

    // Get the button that opens the modal
    var btn1 = document.getElementById("myBtn");
    
    var confirm = document.getElementById("confirm");
    
    // Get the <span> element that closes the modal
    var span = document.getElementsByClassName("close")[0];


    btn1.onclick = function () {
        
        modal.style.display = "block";

        //check empty password field

        if(pw1.value == "") {
            document.getElementById("message1").innerHTML = "*Please put your new password!";
            return false;
        }

        //minimum password length validation
        if(pw1.value.length < 8) {
            document.getElementById("message1").innerHTML = "**Password length must be atleast 8 characters";
            return false;
        }

        //maximum length of password validation
        if(pw1.value.length > 15) {
           document.getElementById("message1").innerHTML = "*Password length must not exceed 15 characters";
           return false;
        } else {
           if(pw1.value == pw2.value){
               document.getElementById("message1").innerHTML=  "Passwords match!";
           }
        
           else {
               document.getElementById("message1").innerHTML=  "Passwords not match!";
           }
        }

    }
    
    confirm.onclick = function () {
        modal.style.display = "none";
    }

    // When the user clicks on <span> (x), close the modal
    span.onclick = function() {
        modal.style.display = "none";
      }
  
      // When the user clicks anywhere outside of the modal, close it
    window.onclick = function(event) {
        if (event.target == modal) {
          modal.style.display = "none";
    }
    }
} 
Advertisement