Coding

Form Validation

Biswas Parajuli Jun 10, 2026 65 views 0 downloads
BCA Second-sem React js
About this Note
Simple Form Validation Using HTML, CSS, and JavaScript
Content

Contact Form — HTML / CSS / JS


<!DOCTYPE html>

<html lang="en">

 

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>Document</title>

  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet">

  <!-- <link rel="stylesheet" href="./style.css"> -->

  <style>

    * {

      font-family: Arial, Helvetica, sans-serif;

      box-sizing: border-box;

    }

 

    body {

      margin: 0;

      min-height: 100vh;

      display: flex;

      align-items: center;

      justify-content: center;

      background: linear-gradient(135deg, #e0eafc, #cfdef3);

    }

 

    button {

      border: none;

      background: linear-gradient(135deg, rgb(224, 234, 252), rgb(207, 222, 243));

      ;

    }

 

 

    .container {

      width: 100%;

      max-width: 520px;

      background: #fff;

      padding: 30px;

      border-radius: 15px;

      box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);

      transition: 0.3s;

    }

 

    .container:hover {

      transform: translateY(-3px);

    }

 

 

    h1 {

      font-size: 2rem;

      text-align: center;

      margin-bottom: 2rem;

      font-weight: 700;

      color: #333;

    }

 

 

    input[type="text"],

    input[type="email"],

    input[type="number"],

    textarea,

    select {

      width: 100%;

      border-radius: 10px;

      padding: 10px 12px;

      border: 1px solid #ddd;

      margin-bottom: 1.5rem;

      outline: none;

      transition: 0.3s;

      font-size: 15px;

    }

 

 

    input:focus,

    textarea:focus,

    select:focus {

      border-color: #4a90e2;

      box-shadow: 0 0 8px rgba(74, 144, 226, 0.3);

    }

 

 

    .genderGroup,

    .colorGroup {

      display: flex;

      align-items: center;

      gap: 10px;

      padding: 8px 10px;

      margin-top: 6px;

      background-color: #f5f7fa;

      border-radius: 8px;

      transition: 0.2s;

    }

 

    .genderGroup:hover,

    .colorGroup:hover {

      background-color: #eaf3ff;

    }

 

 

    .genderGroup input,

    .colorGroup input {

      width: 16px;

      height: 16px;

      cursor: pointer;

    }

 

 

    .errorSms {

      font-size: 13px;

      color: #ff4d4d;

      display: block;

      margin-bottom: 5px;

    }

 

 

    .message {

      margin-top: 2rem;

    }

 

    .submitArea {

      display: flex;

      justify-content: center;

      margin-top: 10px;

    }

 

 

    .submitBtn {

      background: linear-gradient(135deg, #4a90e2, #007bff);

      padding: 10px 25px;

      border-radius: 30px;

      border: none;

      color: white;

      font-weight: 600;

      cursor: pointer;

      transition: 0.3s;

    }

 

    .submitBtn:hover {

      transform: translateY(-2px);

      box-shadow: 0 8px 20px rgba(0, 123, 255, 0.3);

    }

 

    body.dark-mode {

      background: linear-gradient(135deg, #0f172a, #1e293b);

    }

 

    body.dark-mode button {

      background: linear-gradient(135deg, #0f172a, #1e293b);

    }

 

    body.dark-mode .container {

      background: #1e293b;

      color: #d1dae3;

      box-shadow: 0 20px 50px rgba(0, 0, 0, 0.6);

    }

 

 

    body.dark-mode h1 {

      color: #dee2e6;

    }

 

 

    body.dark-mode input[type="text"],

    body.dark-mode input[type="email"],

    body.dark-mode input[type="number"],

    body.dark-mode textarea,

    body.dark-mode select {

      background: #0f172a;

      color: #d5dade;

      border: 1px solid rgba(255, 255, 255, 0.15);

    }

 

 

    body.dark-mode input::placeholder,

    body.dark-mode textarea::placeholder {

      color: #94a3b8;

    }

 

 

    body.dark-mode input:focus,

    body.dark-mode textarea:focus,

    body.dark-mode select:focus {

      border-color: #38bdf8;

      box-shadow: 0 0 10px rgba(56, 189, 248, 0.3);

    }

 

 

    body.dark-mode .genderGroup,

    body.dark-mode .colorGroup {

      background: rgba(255, 255, 255, 0.05);

      color: #e2e8f0;

    }

 

    body.dark-mode .genderGroup:hover,

    body.dark-mode .colorGroup:hover {

      background: rgba(56, 189, 248, 0.1);

    }

 

 

    body.dark-mode .genderGroup input,

    body.dark-mode .colorGroup input {

      accent-color: #38bdf8;

    }

 

    body.dark-mode .errorSms {

      color: #f87171;

    }

 

    body.dark-mode .submitBtn {

      background: linear-gradient(135deg, #38bdf8, #2563eb);

    }

 

    body.dark-mode .submitBtn:hover {

      box-shadow: 0 10px 25px rgba(56, 189, 248, 0.3);

    }

  </style>

</head>

 

<body>

  <main>

    <button id="themeBtn">🌙 </button>

    <form action="#" onsubmit="sendMessage(event)" class="container">

 

 

      <h1>Contact Form</h1>

      <div class="row">

 

        <div class="col-6">

          <label for="name">Name</label>

          <span class="errorSms" id="nameError"></span>

          <input type="text" name="name" id="name">

 

        </div>

        <div class="col-6">

          <label for="email">Email:</label>

          <span class="errorSms" id="emailError"></span>

          <input type="email" name="email" id="email">

        </div>

        <div class="col-6">

          <label for="phone">Phone</label>

          <span class="errorSms" id="phoneError"></span>

          <input type="number" name="phone" id="phone">

        </div>

        <div class="col-6">

          <label for="subject">Subject</label>

          <span class="errorSms" id="subjectError"></span>

          <input type="text" name="subject" id="subject">

        </div>

 

      </div>

      <div class="row">

        <div class="col-4">

          <label>Gender</label>

          <div class="errorSms" id="genderError"></div>

          <div class="genderGroup">

            <input type="radio" name="gender" id="">

            <span>Male</span>

          </div>

          <div class="genderGroup">

            <input type="radio" name="gender" id="">

            <span>Female</span>

          </div>

          <div class="genderGroup">

            <input type="radio" name="gender" id="">

            <span>Others</span>

          </div>

        </div>

        <div class="col-4">

          <label>Color</label>

          <div class="errorSms" id="colorsError"></div>

          <div class="colorGroup">

            <input type="checkbox" name="colors" id="">

            <label for="red">Red</label>

          </div>

          <div class="colorGroup">

            <input type="checkbox" name="colors" id="">

            <label for="green">Green</label>

          </div>

          <div class="colorGroup">

            <input type="checkbox" name="colors" id="">

            <label for="blue">Blue</label>

          </div>

        </div>

        <div class="col-4">

          <label for="country">Country</label>

          <div class="errorSms" id="countryError"></div>

          <select name="country" id="country">

            <option value="">Nepal</option>

            <option value="">India</option>

            <option value="">Chaina</option>

            <option value="">America</option>

          </select>

        </div>

      </div>

      <div class="row">

        <div class="col-12 message">

          <label for="message">Message</label>

          <textarea name="message"></textarea>

        </div>

        <div class="col-12 d-flex submitArea">

          <button type="submit" class="submitBtn">Submit</button>

        </div>

      </div>

    </form>

 

  </main>

 

  <script>

 

    function sendMessage(event) {

      event.preventDefault();

      let name = document.getElementById("name").value;

      if (name === "") {

        document.getElementById("nameError").innerHTML = "* Required";

      } else {

        document.getElementById("nameError").innerHTML = "";

        console.log("Message sent by", name);

      }

 

      //email

      let email = document.getElementById("email").value;

      let emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;

      if (email === "" || !emailPattern.test(email)) {

        document.getElementById("emailError").innerHTML = "* valid email";

      } else {

        document.getElementById("emailError").innerHTML = "";

        console.log("message send by", email);

      }

 

      // phone

      let phone = document.getElementById("phone").value;

      if (phone === "") {

        document.getElementById("phoneError").innerHTML = "* required";

      } else {

        document.getElementById("phoneError").innerHTML = "";

      }

 

      // subject

      let subject = document.getElementById("subject").value;

      if (subject === "") {

        document.getElementById("subjectError").innerHTML = "* required.";

      } else {

        document.getElementById("subjectError").innerHTML = "";

        console.log("form send by:", subject)

      }

 

      // gender

      let gender = document.querySelector('input[name="gender"]:checked');

 

      if (!gender) {

        document.getElementById('genderError').innerText =

          '* required';

        isValid = false;

      }

 

      // color

      let colors = document.querySelectorAll('input[name="colors"]:checked');

 

      if (colors.length === 0) {

        document.getElementById('colorsError').innerText =

          '* minimum 1';

        isValid = false;

      }

 

      // country

      let country = document.getElementById('country').value;

 

      if (country === '') {

        document.getElementById('countryError').innerText =

          '* required';

        isValid = false;

      }

    }

 

 

    let theme = document.getElementById("themeBtn");

    theme.addEventListener("click", () => {

      document.body.classList.toggle("dark-mode");

      if (document.body.classList.contains("dark-mode")) {

        theme.textContent = "☀️";

      } else {

        theme.textContent = "🌙";

      }

    })

  </script>

</body>

 

</html>

 

Comments (0)
Log in to leave a comment.

No comments yet. Be the first!

PDF बनाउँदैछ…