Validate the given form and display result after complete validation performed.

 Validate the given form and display result after complete validation performed.




<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Form</title>
  <style>
    body {
      font-family: sans-serif;
      text-align: left;
    }

    label {
      font-weight: bold;
      line-height: 2.7;
    }

    .form-wrap {
      margin: auto;
      padding: 25px 30px;
      border-radius: 5px;
      background: #f7f7f7f7;
      width: 25%;
      color: #000000;
    }


    input[type="text"],
    input[type="number"],
    input[type="password"],
    input[type="date"],
    select {
      width: 90%;
      padding: 10px;
      margin-bottom: 10px;
      border-radius: 5px;
      font-size: 15px;
      font-weight: bold;
      border-color: #f0e8e800;
    }

    button {
      border: none;
      padding: 10px 15px;
      font-weight: bold;
      font-size: 14px;
      color: #ffffff;
      background: blueviolet;
      border-radius: 4px;
      margin-top: 20px;

    }

    #result {
      background: #514e4e99;
      padding: 10px;
      display: none;
      width: 340px;
      border-radius: 5px;
      color: #ffffff;
    }

    .gender,
    .faculty,
    .lang {
      margin: 10px 0px;
    }

    #faculty {
      width: 96%;
    }

    .d-block {
      display: block !important;
    }

    .d-none {
      display: none;
    }

    .error {
      color: red;
      display: none;
    }
  </style>
</head>

<body>
  <div class="form-wrap">
    <form name="register">
      <div class="form-control">
        <label for="username">User Name</label><br>
        <input type="text" id="username">
        <div class="error" id="usernameError">Username required*</div>
      </div>

      <div class="form-control">
        <label for="password">Password</label><br>
        <input type="password" placeholder="" id="password">
        <div class="error" id="passwordError">Password required*</div>
        <div class="d-none error" id="passwordLength">Password should have <br> minimum 5 max 10 character long.</div>
      </div>

      <div class="form-control">
        <label for="phone">Phone</label>
        <input type="text" id="phone">
        <div class="error" id="phoneError">Phone Number required*</div>
        <div class="d-none error" id="phoneLength">Phone number should be 10 digit Number.</div>
      </div>

      <div class="faculty">
        <label for="faculty">Faculty</label>
        <br>
        <select name="faculty" id="faculty">
          <option value="bim">BIM</option>
          <option value="csit">CSIT</option>
          <option value="bca">BCA</option>
        </select>
      </div>

      <div class="gender">
        <label for="gender">Gender</label><br>
        <input type="radio" value="male" name="gender">Male
        <input type="radio" value="female" name="gender">Female
        <input type="radio" value="other" name="gender">Other
      </div>
      <div class="lang">
        <label for="language">Language</label><br>
        <input type="checkbox" name="lang" value="nepali"> Nepali
        <input type="checkbox" name="lang" value="english"> English
        <input type="checkbox" name="lang" value="hindi"> Hindi
      </div>

      <div class="form-control">
        <label for="dateOfBirth">Date Of Birth</label><br>
        <input type="text" id="date">
        <div class="error" id="dateRequired">Date is required*</div>
        <div class="d-none error" id="validDate">Date format should be dd/mm/yyyy format.</div>
      </div>

      <p id="result"></p>

      <div class="btn-group">
        <button>Submit</button>
      </div>
    </form>
  </div>

  <script>
    const form = document.forms.register;
    const result = document.getElementById("result");
    const allError = document.querySelectorAll(".error");
    const passwordLength = document.getElementById("passwordLength");
    const phoneLength = document.getElementById("phoneLength");
    const dateError = document.getElementById("dateRequired");
    const dateFormat = document.getElementById("validDate");


    form.addEventListener("submit", (e=> {
      e.preventDefault();

      //select elements for specific error
      const nameError = document.getElementById("usernameError");
      const passwordError = document.getElementById("passwordError");
      const phoneError = document.getElementById("phoneError");

      //select elements for value
      const username = form.username.value.trim();
      const password = form.password.value.trim();
      const phone = form.phone.value.trim();
      const gender = form.gender;
      const lang = form.lang;
      const faculty = form.faculty;
      const date = form.date.value.trim();

      //password min and max lenght regex
      let regex = /^[a-z,0-9]{5,10}$/i;
      //phone validation
      let phoneNumber = /[0-9]{10}/

      //date validation
      let validDate = /^([0-2][0-9]|(3)[0-1])(\/)(((0)[0-9])|((1)[0-2]))(\/)\d{4}$/i


      console.log(nameValidation(), dateValidation(), phoneValidation(), passwordValidation())

      allFieldsAreEmpty() ? dipslayAllError() : renderValue();

      function allFieldsAreEmpty() {
        if (!username && !password && !phone && !date)
          return true;
        else
          return false;
      }

      phoneValidation();
      nameValidation();
      passwordValidation();
      dateValidation();


      function dipslayAllError() {
        allError.forEach(item => {
          item.classList.add("d-block");
        });


      }



      function renderValue() {
        result.classList.add("d-block");
        result.innerHTML =
          `Username :${username}<br>
          Password :${password} <br>
          Faculty : ${faculty.options[faculty.selectedIndex].value}<br>
         Gender : ${getCheckedGenderValue()}<br>
         Language: ${getSelectedLanguage()}<br>
         DateOfBirth: ${date}
          `;
      }


      function getCheckedGenderValue() {
        let selectedGender = "";
        gender.forEach(element => {
          if (element.checked)
            selectedGender += element.value
        });
        return selectedGender;
      }

      function getSelectedLanguage() {
        let selectedLang = "";

        lang.forEach(item => {
          if (item.checked)
            selectedLang += item.value + ","
        })
        return selectedLang;
      }


      function nameValidation() {
        !username ? nameError.classList.add('d-block': nameError.classList.remove('d-block');
      }


      function passwordValidation() {
        !password ? passwordError.classList.add("d-block": passwordError.classList.remove("d-block");
        if (!regex.test(password))
          passwordLength.classList.add("d-block");
        else
          passwordLength.classList.remove("d-block");
      }

      function phoneValidation() {
        !phone ? phoneError.classList.add("d-block": phoneError.classList.remove("d-block")
        if (!phoneNumber.test(phone))
          phoneLength.classList.add("d-block");
        else
          phoneLength.classList.remove("d-block");
      }

      function dateValidation() {
        !date ? dateError.classList.add("d-block": dateError.classList.remove("d-block")
        if (!validDate.test(date))
          dateFormat.classList.add("d-block");
        else
          dateFormat.classList.remove("d-block");
      }





    })
  </script>
</body>

</html>

Output 

Validate the given form and display result after complete validation performed.




Username required*

Password required*
Password should have
minimum 5 max 10 character long.
Phone Number required*
Phone number should be 10 digit Number.


Male Female Other

Nepali English Hindi

Date is required*
Date format should be dd/mm/yyyy format.

Reactions

Post a Comment

0 Comments