Input turlari — text, email, password, number, tel, url, date
Muammodan boshlaylik
Ro'yxatdan o'tish formasida hamma maydon bir xil:
<input name="email">
<input name="parol">
<input name="yosh">
<input name="telefon">
<input name="tugilgan">
Telefonda foydalanuvchi:
- Email yozayotganda
@belgisini klaviaturaning ichki sahifasidan qidiradi - Parol yozayotganda — u ekranda ochiq ko'rinadi
- Yoshni yozish uchun harfli klaviaturadan raqamlarga o'tadi
- Tug'ilgan sanani
07.11.2000,2000-11-07yoki7 noyabrdeb — har xil formatda yozadi
Bitta atribut — type — bularning hammasini hal qiladi.
text — oddiy matn
<label for="ism">Ism</label>
<input id="ism" name="ism" type="text" autocomplete="name">
Standart tur — type yozilmasa ham text. Bir qatorli matn: ism, shahar, sarlavha.
Foydali atributlar:
| Atribut | Vazifasi |
|---|---|
value |
Boshlang'ich qiymat |
placeholder |
Namuna matn (label emas!) |
maxlength |
Eng ko'p belgilar soni |
readonly |
O'qish mumkin, o'zgartirish mumkin emas; yuboriladi |
disabled |
O'chirilgan; yuborilmaydi |
autocomplete |
Avtoto'ldirish turi (name, email, tel, street-address...) |
autofocus |
Sahifa ochilganda fokus |
<label for="email">Email</label>
<input id="email" name="email" type="email" autocomplete="email">
- Telefonda klaviaturada
@va.tugmalari ko'rinadi - Yuborishda brauzer formatni tekshiradi:
ali@yokiali.mail.uz— xato (19-dars) multiple— vergul bilan bir nechta email
[!INFO] Brauzer faqat formatni tekshiradi (
nimadir@nimadir), email haqiqatan mavjudligini emas.a@bham "to'g'ri" hisoblanadi. Haqiqiy tekshiruv — serverda va tasdiqlash xati orqali.
password
<label for="parol">Parol</label>
<input id="parol" name="parol" type="password" autocomplete="current-password" minlength="8">
- Belgilar nuqtalar bilan yashiriladi
- Parol menejerlari (brauzer, 1Password, Bitwarden) shu maydonni taniydi
autocomplete="current-password"— kirish formasi;"new-password"— ro'yxatdan o'tish (brauzer kuchli parol taklif qiladi)
Parolni ko'rsatish tugmasi
<input id="parol" name="parol" type="password">
<button type="button" id="korsat">Ko'rsatish</button>
korsat.addEventListener('click', () => {
const ochiq = parol.type === 'text';
parol.type = ochiq ? 'password' : 'text';
korsat.textContent = ochiq ? "Ko'rsatish" : 'Yashirish';
});
type="button" ni unutmang — aks holda tugma formani yuboradi (15-dars).
[!WARNING]
type="password"faqat ekrandan yashiradi — ma'lumotni himoya qilmaydi. Formamethod="post"va HTTPS orqali yuborilishi shart (15-dars).
number
<label for="yosh">Yoshingiz</label>
<input id="yosh" name="yosh" type="number" min="7" max="100" step="1">
- Telefonda raqamli klaviatura
- Kompyuterda yuqori-pastga strelkalar;
↑↓tugmalari bilan o'zgartirish min,max— chegaralar;step— qadam (0.01— tiyinlar,any— istalgan)
number qachon kerak emas
type="number" — hisoblanadigan sonlar uchun: miqdor, yosh, narx, reyting. Raqamlardan iborat, lekin son bo'lmagan narsalar uchun emas:
<!-- ❌ -->
<input type="number" name="karta"> <!-- boshidagi 0 lar yo'qoladi, strelkalar ma'nosiz -->
<input type="number" name="pochta_indeks">
<!-- ✅ raqamli klaviatura, lekin matn -->
<input type="text" name="karta" inputmode="numeric" autocomplete="cc-number">
<input type="text" name="sms_kod" inputmode="numeric" autocomplete="one-time-code" maxlength="6">
Karta raqami, SMS kod, pasport seriyasi bilan qo'shib hisoblanmaydi. Ular uchun inputmode="numeric" — raqamli klaviatura beradi, lekin number ning muammolarisiz (sichqoncha g'ildiragi bilan tasodifan o'zgarish, boshidagi nollar yo'qolishi).
tel
<label for="tel">Telefon raqam</label>
<input id="tel" name="tel" type="tel" autocomplete="tel" placeholder="+998 90 123 45 67">
- Telefonda raqamli telefon klaviaturasi (
+,*,#bilan) - Brauzer formatni tekshirmaydi — davlatlarda format har xil. Tekshirish kerak bo'lsa —
pattern(19-dars)
url
<label for="sayt">Veb-sayt</label>
<input id="sayt" name="sayt" type="url" placeholder="https://example.uz">
- Klaviaturada
/,.va.comtugmalari - Tekshiruv:
https://yoki boshqa protokol bilan boshlanishi kerak —devdocs.uzdeb yozilsa xato
search
<form action="/qidiruv" role="search">
<label for="q" class="sr-only">Qidirish</label>
<input id="q" name="q" type="search" placeholder="Darslardan qidirish...">
</form>
- Ba'zi brauzerlarda ✕ tozalash tugmasi
- Telefonda Enter tugmasi "Qidirish" ga aylanadi
role="search"(yoki yangi<search>tegi) — ekran o'quvchilarga "qidiruv hududi" deydi
Sana va vaqt turlari
<label for="tugilgan">Tug'ilgan sana</label>
<input id="tugilgan" name="tugilgan" type="date" min="1920-01-01" max="2020-12-31">
Brauzer taqvim oynasini ko'rsatadi — foydalanuvchi formatni o'ylamaydi.
| Tur | Nima tanlanadi | Yuboriladigan qiymat |
|---|---|---|
date |
Sana | 2026-11-07 |
time |
Vaqt | 14:30 |
datetime-local |
Sana va vaqt | 2026-11-07T14:30 |
month |
Oy va yil | 2026-11 |
week |
Hafta | 2026-W45 |
[!INFO] Ekranda sana foydalanuvchining tiliga qarab ko'rinadi (
07.11.2026yoki11/07/2026), lekin serverga har doimYYYY-MM-DDformatida ketadi. Server uchun bu juda qulay — format bitta.
min va max ham shu formatda: min="2026-11-07" — o'tgan sanalarni tanlab bo'lmaydi (masalan, bron qilish uchun).
Turlar va telefon klaviaturasi
type / inputmode |
Telefon klaviaturasi |
|---|---|
text |
Oddiy harflar |
email |
Harflar + @ va . |
url |
Harflar + /, .com |
tel |
Telefon raqamlari |
number |
Raqamlar |
search |
Harflar, "Qidirish" tugmasi |
inputmode="numeric" |
Faqat raqamlar (matn maydonida) |
inputmode="decimal" |
Raqamlar va nuqta/vergul |
Nima uchun shunday?
Nima uchun shuncha tur — hammasi baribir matn maydoni, tekshiruvni JavaScript bilan yozsa bo'lmaydimi?
Chunki type faqat tekshiruv emas — u brauzerga maydonning ma'nosini aytadi (9-dars — semantika formalarda ham ishlaydi). Shu ma'no orqali brauzer telefonda to'g'ri klaviaturani ochadi, parol menejeri parolni taklif qiladi, avtoto'ldirish emailni qo'yadi, ekran o'quvchi "email maydoni" deydi, taqvim sanani tanlashni osonlashtiradi. Bularning hech birini JavaScript bilan qilib bo'lmaydi — ular operatsion tizim va brauzerning ichki qismlari. Bitta type="email" — bu bir nechta bepul yaxshilanish.
Xulosa
Eslab qoling:
type— maydonning ma'nosi: to'g'ri klaviatura, tekshiruv, avtoto'ldirishemail—@klaviatura va format tekshiruvi;password— yashirish (himoya — HTTPS)number— faqat hisoblanadigan sonlar; karta, kod uchuninputmode="numeric"tel— telefon klaviaturasi, formatni tekshirmaydi;url—https://bilandate,time,datetime-local— taqvim; qiymat doimYYYY-MM-DDautocomplete—email,tel,current-password,new-password,one-time-codereadonly— yuboriladi;disabled— yuborilmaydi
Keyingi dars
17-dars: Input turlari — checkbox, radio, range, color, file, hidden