Javascript console error : Uncaught TypeError: input is null

Viewed 29

I tried to code a password validator for registration, it works well but I still have an error in the console:

Uncaught Type Error: input is null.

Everything works fine except for this error. the error comes from the line input.addEventListener("input", function()

It's the input that is the problem but I don't understand why. Can anyone help me with this please?

let input = document.querySelector(".password_login");
let number = document.querySelector(".number");
let largeLetter = document.querySelector(".large-letter");
let smallLetter = document.querySelector(".small-letter");
let generique = document.querySelector(".generique");
let special = document.querySelector(".special");

function validation(password) {

  if (/[@[^_!"#$%&'(+)*,./:;{}<>=|~?]{1}/.test(password.value)) {
    input.classList.remove("invalide");
    special.classList.remove("error");

    input.classList.add("succes");
    special.classList.add("succes");
  } else {
    input.classList.remove("succes");
    special.classList.remove("succes");

    input.classList.add("invalide");
    special.classList.add("error");
  }
  if (/[0-9]{1}/.test(password.value)) {
    input.classList.remove("invalide");
    number.classList.remove("error");

    input.classList.add("succes");
    number.classList.add("succes");
  } else {
    input.classList.remove("succes");
    number.classList.remove("succes");

    input.classList.add("invalide");
    number.classList.add("error");
  }

  if (/[A-Z]{1}/.test(password.value)) {
    input.classList.remove("invalide");
    largeLetter.classList.remove("error");

    input.classList.add("succes");
    largeLetter.classList.add("succes");
  } else {
    input.classList.remove("succes");
    largeLetter.classList.remove("succes");

    input.classList.add("invalide");
    largeLetter.classList.add("error");
  }

  if (/[a-z]{1}/.test(password.value)) {
    input.classList.remove("invalide");
    smallLetter.classList.remove("error");

    input.classList.add("succes");
    smallLetter.classList.add("succes");
  } else {
    input.classList.remove("succes");
    smallLetter.classList.remove("succes");

    input.classList.add("invalide");
    smallLetter.classList.add("error");
  }

  if (password.value.length >= 8) {
    generique.classList.remove("error");
    generique.classList.add("succes");
  } else {
    generique.classList.add("error");
    generique.classList.remove("succes");
  }
}

function remove() {

  input.classList.remove("invalide");
  input.classList.remove("succes");

  special.classList.remove("error");
  special.classList.remove("succes");

  number.classList.remove("error");
  number.classList.remove("succes");

  largeLetter.classList.remove("succes");
  largeLetter.classList.remove("error");

  smallLetter.classList.remove("succes");
  smallLetter.classList.remove("error");

  generique.classList.remove("succes");
  generique.classList.remove("error");
}

input.addEventListener("input", function() {
  validation(this);

  if (!this.value) {
    remove();
  }
});
    <div class="containerSignUp">
<div class="container-form">
    <form action="index.php?action=newUser" class="group-form" method="post">
        <div class="formSignUpContainer">
            <div class="sliderSignUpSection">
                <img src="www/images/signup.jpg" alt="fille sur une plage">
            </div>
            <div class="formSection2">
                <h1>Création de votre compte</h1>
                <div class="inputRow">
                    <div class="inputIcon">
                        <i class="fa-solid fa-user"></i>
                    </div>
                    <label for="family-name"></label>
                        <input type="text" id="family-name" name="family-name" placeholder="Nom" required="required"/>
                </div>
                <div class="inputRow">
                    <div class="inputIcon">
                        <i class="fa-solid fa-user"></i>
                    </div>
                    <label for="name0"></label>
                        <input type="text" id="name0" name="name" placeholder="Prenom" required="required"/>
                </div>
                <div class="inputRow">
                    <div class="inputIcon">
                        <i class="fa-solid fa-envelope"></i>
                    </div>
                    <label for="email0"></label>
                        <input type="email" id="email0" name="email" placeholder="Email" required="required"/>
                </div>
                <div class="inputRow">
                    <div class="inputIcon">
                        <i class="fa-solid fa-lock"></i>
                    </div>
                    <div class="block-input">
                        <label for="password0"></label>
                            <input type="password" id="password0" name="password" class="password-login" placeholder="Mot de passe" pattern="^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[-+!*$@%_])([-+!*$@%_\w]{8,15})$" required="required"/>
                    </div>
                </div>
                <div class="validator-criters">
                    <div>
                        <span>&ensp;Choisissez un mot de pass sécurisé, il doit contenir au moins :</span>
                    </div>
                    <div>
                        <span class="number"><i class="fas fa-check-circle"></i>&ensp;1 chiffres.</span>
                    </div>
                    <div>
                        <span class="special"><i class="fas fa-check-circle"></i>&ensp;1 caractère spécial.</span>
                    </div>
                    <div>
                        <span class="large-letter"><i class="fas fa-check-circle"></i>&ensp;1 majuscule.</span>
                    </div>
                    <div>
                        <span class="small-letter"><i class="fas fa-check-circle"></i>&ensp;1 minuscule.</span>
                    </div>
                    <div>
                        <span class="generique"><i class="fas fa-check-circle"></i>&ensp;8 caractères.</span>
                    </div>
                </div>
                <div class="inputRow">
                    <div class="inputIcon">
                        <i class="fa-solid fa-cake-candles"></i>
                    </div>
                    <label for="date"></label>
                        <input type="date" id="date" name="birth"
                               value=""
                               min="1930-01-01" max="2022-01-01" required="required">
                </div>
                <div class="inputRow">
                    <div class="inputIcon">
                        <i class="fa-solid fa-house-user"></i>
                    </div>
                    <label for="address"></label>
                         <textarea placeholder="Adresse" id="address" name="address"
                                  rows="5" cols="33" required="required"></textarea> 
                </div>
                <div class="inputRow">
                    <div class="inputIcon">
                        <i class="fa-solid fa-city"></i>
                    </div>
                    <label for="city0"></label>
                        <input type="text" id="city0" name="city" placeholder="Ville" required="required"/>
                </div>
                <div class="inputRow">
                    <div class="inputIcon">
                        <i class="fa-solid fa-envelope"></i>
                    </div>
                    <label for="postal-code"></label>
                        <input type="text" id="postal-code" name="code-postal" placeholder="Code postal" required="required"/>
                </div>
                <div class="inputRow">
                    <div class="inputIcon">
                        <i class="fa-solid fa-phone"></i>
                    </div>
                    <label for="phone0"></label>
                        <input type="tel" id="phone0" name="phone" placeholder="Telephone" required="required"/>
                </div>
                <div class="btnRow">
                    <input type="submit" value="Créer votre compte" id="loginBtn">
                </div>
                <div class="btnRow">
                    <input type="reset" value="Annuler" id="resetBtn" >
                </div>
            </div>
        </div>
    </form>
</div> 
</div>

0 Answers
Related