Skip to content

Loyiha: Formani Tekshirish (Validation) ​

Ushbu loyihada biz foydalanuvchi ma'lumotlarini (ism, email, parol) real vaqtda tekshiradigan va xato bo'lsa, ularni ko'rsatadigan shaklni (form) yaratamiz.


Loyiha maqsadi

  • Ma'lumotlar kiritilmaganda yoki noto'g'ri bo'lganda formani yuborilishini to'xtatish.
  • Foydalanuvchiga tushunarli xato xabarlarini ko'rsatish.
  • Email va parolni ma'lum shartlar asosida tekshirish. :::

1-qadam: HTML formasi ​

Forma ichiga maydonlar (input) va xato xabarlari uchun bo'sh joylar qo'shib olamiz:

html
<form id="signupForm" class="validation-form">
  <div class="field">
    <label>Ism:</label>
    <input id="name" type="text" placeholder="Ismingizni kiriting" />
    <p id="nameError" class="error-msg"></p>
  </div>

  <div class="field">
    <label>Email:</label>
    <input id="email" type="text" placeholder="misol@mail.com" />
    <p id="emailError" class="error-msg"></p>
  </div>

  <div class="field">
    <label>Parol:</label>
    <input id="password" type="password" placeholder="Kamida 8 ta belgi" />
    <p id="passwordError" class="error-msg"></p>
  </div>

  <button type="submit">Ro'yxatdan o'tish</button>
  <p id="formResult"></p>
</form>

2-qadam: JavaScript mantiqi ​

Ma'lumotlarni tekshiruvchi funksiyalarni ketma-ket yozamiz:

js
const form = document.getElementById('signupForm')
const nameInput = document.getElementById('name')
const emailInput = document.getElementById('email')
const passInput = document.getElementById('password')

// Xato xabarlari uchun joylar
const nameError = document.getElementById('nameError')
const emailError = document.getElementById('emailError')
const passError = document.getElementById('passwordError')

// Tekshiruv funksiyalari
function validateName() {
  let val = nameInput.value.trim()
  if (val.length < 2) {
    nameError.innerText = "Ism kamida 2 ta harfdan iborat bo'lishi shart!"
    return false
  }
  nameError.innerText = ''
  return true
}

function validateEmail() {
  let val = emailInput.value.trim()
  let emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
  if (!emailRegex.test(val)) {
    emailError.innerText = "Email formati noto'g'ri!"
    return false
  }
  emailError.innerText = ''
  return true
}

function validatePassword() {
  let val = passInput.value
  if (val.length < 8) {
    passError.innerText = "Parol kamida 8 ta belgidan iborat bo'lishi kerak!"
    return false
  }
  passError.innerText = ''
  return true
}

// Formani yuborish hodisasi
form.addEventListener('submit', function (event) {
  event.preventDefault() // Sahifa yangilanishini to'xtatish

  let isNameOk = validateName()
  let isEmailOk = validateEmail()
  let isPassOk = validatePassword()

  if (isNameOk && isEmailOk && isPassOk) {
    document.getElementById('formResult').innerText =
      "Muvaffaqiyatli o'tdingiz!"
    document.getElementById('formResult').style.color = 'green'
  } else {
    document.getElementById('formResult').innerText =
      'Iltimos, xatolarni tuzating.'
    document.getElementById('formResult').style.color = 'red'
  }
})

Muhim usullar ​

event.preventDefault() ​

Bu metod formaning sukut bo'yicha bajaradigan ishini (sahifani qayta yuklash) to'xtatadi. Bu bizga JavaScript orqali ma'lumotlarni tekshirishga imkon beradi.

trim() ​

Foydalanuvchi bilmasdan bosib yuborgan ortiqcha bo'shliqlarni (probel) olib tashlash uchun ishlatiladi.

Regex (Muntazam ifodalar) ​

Emailni tekshirish uchun ishlatilgan /^[^\s@]+@[^\s@]+\.[^\s@]+$/ ifodasi email manzilida @ belgisi va nuqta borligini tekshiradi.


Topshiriq

Foydalanuvchi ma'lumot yozayotgan vaqtidayoq (tugmani bosmasdan) xatolarni ko'rsatadigan qilib o'zgartiring. Buning uchun input hodisasidan foydalaning.