GH GambleHub

Ichki validatsiya va UX xatolari

1) Qonunning

1. Oldindan aytilgan yordam, jazo emas. Xatolikka qanday toʻgʻri kiritishni koʻrsating.
2. Maʼlumotni yoʻqotmaslik. Har qanday xato kiritilgan xatoni yoʻq qilmaydi; «Bekor qilish «/» Takrorlash ».
3. Namoyish vaqti.

Kiritishdan oldin: helper text (qoidalar va misollar).
Vaqt davomida: yumshoq xintlar/niqob/avtomatik almashtirish.
Keyin (blur/submit): «qanday tuzatish kerak» koʻrsatmasi bilan aniq xato.
4. E’tiborni tejash. Bitta xabar - bitta sabab va harakat.
5. Foydalanish imkoniyati. Matn + ikona/rang, ARIA orqali maydon bilan aloqa, birinchi xato maydoniga eʼtibor.


2) Validatsiya qatlamlari

Mijoz sinxron: format, uzunlik, majburiyat, niqob. Tez va arzon.
Mijoz asinxron: loginning o’ziga xosligi, BIN/IBAN, API-maslahatlarni tekshirish. Debauns bilan.
Server: biznes-qoidalar, limitlar, risk-skoring, avtorizatsiya/huquqlar. Oxirgi instantsiya haqiqati.
Qoida: mukammal mijoz tekshiruvida ham server yakuniy matnni tasdiqlaydi va shakllantiradi.


3) Tayminglar va debauns

Validatsiya blur → tezkor fidbek ≤ 100 ms.
Asinxron tekshirish - kirish to’xtatilgandan so’ng debauns 250-400 ms.
Muvaffaqiyatni tasdiqlash - lakonik («Ok») yoki yashil ikona; «salomlarsiz».
’submit’ da xatolar roʻyxatini koʻrsating va diqqatni birinchisiga koʻchiring.

js const debounce = (fn, ms=300)=>{let t;return (...a)=>{clearTimeout(t);t=setTimeout(()=>fn(...a),ms)}}

4) Xatolar nusxasi

Namuna: sabab → qanday tuzatish mumkin → muqobil (agar mavjud boʻlsa).

Yaxshi: "Maxfiy soʻz 8 belgidan qisqa. Boshqa belgilar qoʻshing yoki iboradan foydalaning".
Yaxshi: "IBAN noto’g’ri ko’rinadi. Uzunligi va belgilarini tekshiring: A-Z, 0-9".
Yomon: «Noto’g’ri kirish».
Foydalanuvchini ayblamang; Jargon va kodlardan qoching.
Sezgir zonalarda (to’lovlar/QQS) xavfsizlikni ochib beradigan tafsilotlardan qochamiz.


5) Xabarlarni ko’rsatish patternlari

5. 1 Maydon yaqinida (inline)

`aria-invalid="true"`, текст в `aria-describedby`.
Qisqacha, aniq; uzun xatboshilarsiz.
Rang + belgi, lekin mazmuni matnda.

5. 2 Shakl ostida (summary)

Langar xatolari roʻyxati.
Xatoga oʻtish/bosish tugmasi fokusni koʻchiradi.

5. 3 Joʻnatish jarayonida

Qayta bosishni toʻxtating (state’busy’).
Taymautda 3-5 s - «Tasdiqlashni kutamiz»... xavfsiz qaytarma bilan.


6) Niqoblar, avtoyo’llar va tuzatuvchilar

Niqoblar qoʻyish/tahrirlashga xalaqit bermasligi kerak. Bepul kiritishga ruxsat bering, kaput ostida normallashtiring.
Avtomatik maslahatlar: placeholder formatlarini «majburiy» qism sifatida emas, balki maslahat sifatida koʻrsating.
Normallashtirish: trimming bo’shliqlar, registrlarni birxillashtirish, avtoformat (masalan,’+ 1 (___) ___ - ____’) - lekin boshlang’ich ma’lumotlarga «toza» versiyani saqlang.


7) Foydalanish imkoniyati (A11y)

Aloqa:’label’ ’input’,’aria-describedby’dagi xatolar.
Tanqidiy -’role = «alert»’, axborot -’role = «status»’.
Fokusni’: focus-visible’xato maydoniga qaytaring.
Matn/piktogramma kontrasti ≥ AA; maʼnosi faqat rangga bogʻliq emas.

html
<label for="email">Email</label>
<input id="email" name="email" aria-describedby="email-help email-err">
<small id="email-help">Например: user@domain.tld</small>
<p id="email-err" class="field-error" role="alert" hidden>Проверьте формат email</p>

8) Xalqaro formatlar va mahalliylashtirish

Nomlar/manzillar: turli alifbolar, uzunliklar, apostroflar, defislarga ruxsat bering.
Sanalar/valyutalar/raqamlar: lokal kirish formatlari va qattiq ichki saqlash tuzilmasi (ISO/tsentlar soni) dan foydalaning.
Telefon: xalqaro’+ CC’formatida kirish, mamlakat bo’yicha avtomat qo’llanma.
Xabarlar tili: qisqa, madaniy betaraf; satr uzunligining + 20-30% ni qo’ying.


9) Xavfsizlik va maxfiylik

Hisob mavjud/mavjud emasligini koʻrsatmang - umumiy matn: «Agar elektron pochta roʻyxatdan oʻtgan boʻlsa, biz xat yuboramiz».
Nozik maʼlumotlarni (PAN, pasport) yashiring.
Tanqidiy qadamlarda (stavka/to’lov) idempotentlik va «xavfsiz takrorlash» dan foydalaning.
Log’lar - xabarlarda PII bo’lmagan korrelyatsiya ID bilan.


10) Taraqqiyotni saqlash

Loyihaning avtoseyvi (lokal/serverda).
Xato qilingan taqdirda - shakl to’ldirilgan bo’lib qoladi; keyinroq takrorlash taklif etiladi.
Koʻp bosqichli jarayonlarda (KYC) - tugallangan qadamlarni saqlab qoling.


11) Asinxron validatsiya

Debauns 250-400 ms; Ekranni to’sib qo’ymasdan maydon yonida «tekshiramiz».
Maket siljishlarisiz muvaffaqiyat/muvaffaqiyatsizlikning aniq ko’rsatkichi.
Tarmoq vaqti → "Tekshirib boʻlmadi. Xavf bilan davom etishni istaysizmi?" (agar ruxsat etilsa) yoki «Takrorlash».

js const checkUsername = debounce(async (v)=>{
state.usernameChecking = true;
const ok = await api.unique('username', v).catch(()=>null);
state.usernameChecking = false;
state.usernameValid = ok === true;
}, 300);

12) To’lov shakllari va KYC (o’ziga xos xususiyat)

Xaritalar: PAN formati, muddati, CVC - kiritilishiga qarab validatsiya; xatolar - bank tomonidan rad etish sabablarini oshkor qilmasdan.
A2A/hamyonlar: mamlakat/limitlar bo’yicha yo’l qo’yilishini tekshirish, komissiyalar/muddatlar to’g "risidagi aniq matnlar.
KYC: foto/hujjatlarga bosqichma-bosqich talablar, oldindan ko’rib chiqish, faylning o’lchami/turi, tekshirish muddatlari, maxfiylik.
Mas’uliyatli o’yin: «Limit belgilash «/« Yordam »harakatlari bilan neytral xabarlar.


13) Antipatternlar

Har bir belgi uchun xatolarni debaunsiz koʻrsatish.
Xato roʻy berganda shaklni qayta tiklash.
Maydon/qoidani koʻrsatmagan holda «Notoʻgʻri kirish» xabari.
Tanqidiy maʼlumot faqat rang/ikonka bilan.
Bitta maydonni tekshirish uchun butun sahifani bloklash.
Tarmoq uzilishlarida oflayn rejim va takrorlashlarning yo’qligi.


14) Dizayn-tizim tokenlari (misol)

json
{
"validation": {
"debounceMs": 300,
"blurFeedbackMs": 100,
"asyncTimeoutMs": 5000,
"summaryMaxItems": 6
},
"a11y": {
"useAriaDescribedby": true,
"errorRole": "alert",
"statusRole": "status"
},
"visual": {
"fieldGap": 8,
"iconSize": 16,
"borderRadius": 10
}
}

15) Sotish snippetlari

inline validator bilan maydon (format + server tekshiruvi):
js const rules = {
email: v => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v)          "Проверьте формат email"
};
async function validateEmail(v){
const fmt = rules.email(v);
if (fmt!== true) return fmt;
try {
const r = await fetch(`/api/email/check?v=${encodeURIComponent(v)}`);
const { allowed } = await r.json();
return allowed? true: "Этот email недоступен. Выберите другой.";
} catch {
return "Не удалось проверить. Повторите позже.";
}
}
Fokus xatolari:
ts function focusFirstError() {
const err = document.querySelector('[aria-invalid="true"]');
if (err) err.focus({ preventScroll:false });
}
Loyihani saqlash:
js const saveDraft = debounce(form => localStorage.setItem('draft', JSON.stringify(Object.fromEntries(new FormData(form)))), 500);
form.addEventListener('input', ()=>saveDraft(form));

16) Metrika va nazorat

Time-to-Fix (xatodan tuzatishgacha boʻlgan vaqt).
Error rate (format/limitlar/server).
Qayta joʻnatish (retry success rate).
Tashlangan shakllar ulushi va qadam chuqurligi.
Maslahatlar bilan to’ldirish: «Tafsilotlar» CTR, maslahatlarni yashirish chastotasi.


17) QA-chek-varaq

A11y

  • Fokus birinchi xato maydoniga o’tadi;’aria-describedby ’/’ aria-invalid’qo’yilgan.
  • Kontrast ≥ AA; xabarlar faqat rangga bogʻliq emas.

Xatti-harakatlar

  • Debauns bilan o’rnatilgan validatsiya; xatolar blur (tanqidiy niqoblardan tashqari) dan oldin paydo bo’ladi.
  • Submit uchun maʼlumot shakllantiriladi, maydonlar tozalanmaydi.
  • Asinxron tekshiruvlar sahifani bloklamaydi; taymaut va takrorlash mavjud.

Matn

  • Sabab + qanday tuzatish kerak; kodlarsiz/aybsiz.
  • Lokalizatsiya sxemani buzmaydi; misollar dolzarbdir.

Xavfsizlik

  • Xabarlarda PII tarqalishi yo’q; Hisobni oshkor qilmaymiz.
  • Tanqidiy operatsiyalar uchun idempotentlik.

18) Dizayn-tizimdagi hujjatlar

Komponentlar:’FieldError’,’FormSummary’,’HelperText’,’BusyButton’.
Namunaviy maydonlar uchun qoidalar xaritalari (email, telefon, parol, manzil, IBAN, sana).
Debound, asinxron tekshirish va oflayn xulq-atvor bo’yicha gaydlar.
Tez-tez xatoliklar uchun matn namunalari va «oldin/keyin» misollari.


Qisqacha xulosa

Ichki validatsiya - bu oldindan aytilgan yordam, aniq ko’rsatmalar va ma’lumotlarga ehtiyotkorlik bilan munosabatda bo’lish. Mahalliy va serverda tekshiring, xatolarni kerakli vaqtda aniq harakatlar bilan ko’rsating, maxfiylik va maxfiylikni hurmat qiling, taraqqiyotni saqlab qoling va debounsdan foydalaning. Shunday qilib, shakllar do’stona bo’lib, xatolar tez va to’g’ri bo’ladi.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.