HTML

Formalar

Formalar โ€” foydalanuvchidan ma'lumot olishning asosiy usuli. Ro'yxatdan o'tish, tizimga kirish, qidiruv, izoh qoldirish โ€” bularning barchasi formalar orqali amalga oshadi. Ushbu darsda formani qanday qurish, turli maydonlar (input) yaratish va ularni tekshirish (validatsiya)ni o'rganamiz.

form tegi

Barcha kiritish maydonlari <form> tegi ichiga joylashadi. Bu teg โ€” foydalanuvchi to'ldiradigan ma'lumotlarni birlashtiruvchi "idish". Uning ikkita muhim atributi bor:

<form action="/royxatdan-otish" method="POST">
  <!-- Bu yerga maydonlar joylashadi -->
</form>
GET โ€” ma'lumotni URL manzili orqali yuboradi (masalan, qidiruv uchun, ma'lumot maxfiy bo'lmaganda). POST โ€” ma'lumotni yashirin (URL'da ko'rinmasdan) yuboradi. Parol yoki shaxsiy ma'lumot uchun har doim POST ishlatiladi.

input tegi va uning turlari

<input> โ€” formaning eng ko'p ishlatiladigan tegi. Bu bitta teg type atributiga qarab butunlay boshqacha maydonga aylanadi. input โ€” bo'sh teg (yopuvchisi yo'q).

Matn maydoni: text

Eng oddiy tur โ€” oddiy matn kiritish maydoni:

<input type="text" name="ism" placeholder="Ismingizni kiriting">

Parol: password

Parol maydoni โ€” kiritilgan belgilar nuqta yoki yulduzcha bilan yashiriladi:

<input type="password" name="parol" placeholder="Parolingiz">

Elektron pochta: email

Bu tur brauzerga "bu maydon email bo'lishi kerak" deb aytadi. Brauzer avtomatik ravishda @ belgisi borligini tekshiradi:

<input type="email" name="email" placeholder="pochta@example.com">

Raqam: number

Faqat raqam kiritish uchun. Ko'pincha eng kichik va eng katta qiymat ham belgilanadi:

<input type="number" name="yosh" min="18" max="100">

min โ€” eng kichik ruxsat etilgan qiymat, max โ€” eng katta qiymat.

Sana: date

Sana tanlash uchun. Brauzer avtomatik ravishda kalendar ko'rsatadi:

<input type="date" name="tugilgan-sana">

Belgilash katakchasi: checkbox

checkbox โ€” foydalanuvchi bir yoki bir nechta variantni belgilashi mumkin bo'lgan katakcha:

<input type="checkbox" name="qoidalar" id="qoidalar">
<label for="qoidalar">Men qoidalarga roziman</label>

Yakka tanlov: radio

radio โ€” bir nechta variantdan faqat bittasini tanlash uchun. Bir guruhga tegishli radiolar bir xil name ga ega bo'lishi kerak:

<input type="radio" name="jins" id="erkak" value="erkak">
<label for="erkak">Erkak</label>
<input type="radio" name="jins" id="ayol" value="ayol">
<label for="ayol">Ayol</label>
Radiolar bir xil name ga ega bo'lganda, ular bitta guruh hisoblanadi โ€” foydalanuvchi ulardan faqat bittasini tanlay oladi. Agar name har xil bo'lsa, har biri alohida tanlanadi va bu xato bo'ladi.

label tegi

<label> โ€” kiritish maydoniga izoh (yorliq) qo'shadi. Bu shunchaki matn emas: label maydonga bog'lanadi va uni bosganda maydon avtomatik faollashadi. Bu ayniqsa checkbox va radiolar uchun qulay.

Bog'lash ikki xil usulda bo'ladi. Birinchi usul โ€” labelning for atributini inputning id atributiga tenglashtirish:

<label for="ism">Ismingiz:</label>
<input type="text" id="ism" name="ism">

Ikkinchi usul โ€” inputni labelning ichiga joylash:

<label>
  Ismingiz:
  <input type="text" name="ism">
</label>
Har bir kiritish maydoniga label qo'shishni odat qiling. Bu foydalanish qulayligi (a11y) uchun juda muhim โ€” ekran o'quvchi dasturlar maydonning nima uchun ekanini aynan label orqali biladi. Bosish sohasi ham kengayadi, bu telefonlarda qulay.

Ochiluvchi ro'yxat: select va option

<select> โ€” bosilganda ochiladigan variantlar ro'yxati (dropdown). Har bir variant <option> tegi bilan yoziladi:

<label for="shahar">Shahringiz:</label>
<select name="shahar" id="shahar">
  <option value="toshkent">Toshkent</option>
  <option value="samarqand">Samarqand</option>
  <option value="buxoro">Buxoro</option>
</select>

Har bir <option>ning value atributi โ€” serverga yuboriladigan qiymat, teglar orasidagi matn esa โ€” foydalanuvchi ko'radigan yozuv. Boshlang'ich (namuna) variant qo'shish uchun birinchi optionni disabled selected qilib qo'yish mumkin:

<select name="shahar">
  <option value="" disabled selected>Shaharni tanlang</option>
  <option value="toshkent">Toshkent</option>
  <option value="samarqand">Samarqand</option>
</select>

Katta matn maydoni: textarea

<input type="text"> bitta qatorli. Agar foydalanuvchi uzun matn (izoh, xabar) yozishi kerak bo'lsa, <textarea> ishlatiladi. Bu โ€” juft teg:

<label for="izoh">Izohingiz:</label>
<textarea id="izoh" name="izoh" rows="5" cols="30" placeholder="Fikringizni yozing..."></textarea>

rows โ€” ko'rinadigan qatorlar soni (balandlik), cols โ€” ko'rinadigan ustunlar soni (kenglik).

textareada boshlang'ich matn value atributida emas, balki ochuvchi va yopuvchi teg orasida yoziladi. Shu sababli ochuvchi va yopuvchi teg orasiga ortiqcha bo'shliq qo'ymang โ€” u ham matn hisoblanadi.

Tugmalar: button

Formani yuborish uchun tugma kerak. Uni ikki xil usulda yasash mumkin:

<button type="submit">Yuborish</button>
<input type="submit" value="Yuborish">

<button> tegining type atributi uch xil bo'ladi:

<button> ni afzal ko'ring, chunki uning ichiga matn, rasm yoki boshqa teglarni joylash mumkin. <input type="submit"> esa faqat oddiy matn qabul qiladi.

Validatsiya atributlari

HTML formani o'zi tekshira oladi โ€” foydalanuvchi noto'g'ri ma'lumot kiritsa yoki majburiy maydonni bo'sh qoldirsa, forma yuborilmaydi. Buning uchun maxsus atributlar bor:

<form action="/kirish" method="POST">
  <label for="email">Email:</label>
  <input type="email" id="email" name="email" required>

  <label for="parol">Parol:</label>
  <input type="password" id="parol" name="parol" required minlength="8">

  <button type="submit">Kirish</button>
</form>

Bu misolda: email maydoni to'ldirilishi shart va @ belgisi bo'lishi kerak; parol maydoni to'ldirilishi shart va kamida 8 ta belgidan iborat bo'lishi kerak. Bu shartlar bajarilmasa, brauzer ogohlantirish ko'rsatadi va formani yubormaydi.

HTML validatsiyasi โ€” birinchi himoya qatlami, lekin u yetarli emas! Tajribali foydalanuvchi uni chetlab o'tishi mumkin. Shuning uchun serverda ham ma'lumotni albatta qayta tekshirish shart. HTML validatsiyasi โ€” bu qulaylik, xavfsizlik emas.

To'liq forma misoli

Barcha o'rganilganlarni birlashtirgan ro'yxatdan o'tish formasi:

<form action="/royxat" method="POST">
  <h2>Ro'yxatdan o'tish</h2>

  <label for="ism">Ism:</label>
  <input type="text" id="ism" name="ism" required>

  <label for="email">Email:</label>
  <input type="email" id="email" name="email" required>

  <label for="yosh">Yosh:</label>
  <input type="number" id="yosh" name="yosh" min="18" max="100">

  <label for="shahar">Shahar:</label>
  <select id="shahar" name="shahar">
    <option value="toshkent">Toshkent</option>
    <option value="samarqand">Samarqand</option>
  </select>

  <label>
    <input type="checkbox" name="rozilik" required>
    Men shartlarga roziman
  </label>

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

Xulosa