GH GambleHub

Yerleşik doğrulama ve UX hataları

1) İlkeler

1. Kestirimci bakım, ceza değil. Hatadan önce nasıl doğru girileceğini gösteriyoruz.
2. Verileri kaybetmeyin. Herhangi bir hata girileni yok etmez; İptal Et/Yeniden Dene'yi destekleyin.
3. Gösterim anı.

Girmeden önce: yardımcı metin (kurallar ve örnekler).
Sırasında: yumuşak ipuçları/maske/otomatik değiştirme.
After (blur/submit): "nasıl düzeltilir" komutu ile açık bir hata.
4. Ekonomiye dikkat. Bir mesaj bir sebep ve bir eylemdir.
5. Erişilebilirlik. Metin + simge/renk, ARIA aracılığıyla alana bağlantı, ilk hatalı alana odaklanın.


2) Doğrulama katmanları

İstemci eşzamanlı: biçim, uzunluk, zorunlu, maske. Hızlı ve ucuz.
İstemci eşzamansız: oturum açma benzersizliği, BIN/IBAN denetimi, API ipuçları. Debunking ile.
Sunucu odası: iş kuralları, limitler, risk puanlaması, yetkilendirme/haklar. Son çare gerçeği.
Kural: İdeal bir müşteri kontrolünde bile, sunucu nihai metni onaylar ve üretir.


3) Zamanlamalar ve debunks

Bulanıklaştırma için doğrulama - 100 ms ≤ anında geri bildirim.
Asenkron kontrol - giriş durduktan sonra borç 250-400 ms.
Başarının onayı - laconic ("Ok") veya yeşil simge; "Selam" olmadan.
'Gönder'de hataların listesini gösterir ve odağı ilkine aktarırız.

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

4) Metin yazarlığı hataları

Şablon: sebep - nasıl düzeltilir - alternatif (varsa).

İyi: "Şifre 8 karakterden daha kısa. Daha fazla karakter ekleyin veya bir cümle kullanın.

İyi: "IBAN doğru görünmüyor. Uzunluğu ve karakterleri kontrol edin: A-Z, 0-9"

Kötü: "Yanlış giriş".
Kullanıcıyı suçlamayın; jargon ve kodlardan kaçının.
Hassas alanlarda (ödemeler/ASC), güvenliği ortaya çıkaran ayrıntılardan kaçınırız.


5) Mesaj görüntüleme desenleri

5. 1 Sahada (satır içi)

'aria-invalid =' true '', текст в 'aria-describedby'.
Kısaca, özellikle; Uzun paragraflar olmadan.
Renk + simge, ancak anlam - metinde.

5. 2 Formun altında (özet)

Alan bağlantılarıyla ilgili tüm hataları listeler.
"Hataya git" düğmesi/bir öğeye tıklamak odağı kaydırır.

5. 3 Gönderme sürecinde

Blok tekrarlanan presleme (durum 'meşgul').
3-5 s bir zaman aşımı ile - "Onay bekliyor"... Güvenli bir tekrarla.


6) Maskeler, otomatik ipuçları ve prova okuyucular

Maskeler ekleme/düzenlemeye müdahale etmemelidir. Ücretsiz girişe izin verin, kaputun altında normalleştirin.
Otomatik ipuçları: örnek formatları göster, ipucu olarak yer tutucu, "gerekli'bir bölüm değil.
Normalleştirme: boşlukları kırpma, kayıtları birleştirme, otomatik biçimlendirme (örneğin, '+ 1 (___) ___ - ____') - ancak "temiz" sürümü kaynak verilerde tutun.


7) Kullanılabilirlik (A11y)

Link: 'Label' ↔ 'input', errors in 'aria-description edby'.
Critical - 'role =' alert ', informational -' role = 'status'.
Odağı hatalı alana döndürüyoruz, gördüğümüz ': odak-görünür'.
Metin/simge kontrastı ≥ AA; Anlam sadece renge bağlı değildir.

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) Uluslararası formatlar ve yerelleştirme

Adlar/adresler: farklı alfabelere, uzunluklara, kesme işaretlerine, tirelere izin verir.
Tarihler/para birimleri/sayılar: Yerel giriş formatlarını ve sıkı dahili depolama yapılarını kullanın (ISO/sent sayısı).
Telefon: uluslararası formatta giriş '+ CC', ülkeye göre otomatik ipucu.
Mesaj dili: kısa, kültürel olarak tarafsız; Çizgi uzunluğunun + %20-30'unu yatır.


9) Güvenlik ve gizlilik

Hesabın var olduğunu/olmadığını göstermeyin - genel metin: "E-posta kayıtlıysa, bir e-posta göndereceğiz".
Hassas verileri maskeleme (PAN, pasaport).
Kritik adımlarda (teklif/ödeme) idempotence ve "güvenli tekrarlar" kullanın.
Günlükler - mesajlarda PII olmadan korelasyon kimliği ile.


10) İlerlemeyi kaydetme

Taslak otomatik kaydetme (yerel/sunucu).
Gönderim hatası durumunda - form doldurulmaya devam eder; Önerilen daha sonra tekrarlanır.
Çok Adımlı İşlemler (KYC) için - Tamamlanan adımları kaydedin.


11) Eşzamansız doğrulama

Debowns 250-400 ms; Tüm ekranı engellemeden alanın yakınında "kontrol" gösteriyoruz.
Düzenin "seğirmesi" olmadan başarı/başarısızlığın açık bir göstergesi.
Ağ zaman aşımı - "Doğrulanamadı. Risk almaya devam etmek istiyor musunuz? (varsa) veya Yinele.

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) Ödeme formları ve KYC (özellikler)

Haritalar: PAN formatı, terim, CVC - girildiği gibi doğrulama; hatalar - banka tarafından reddedilme nedenini açıklamadan.
A2A/wallets: ülkeye/sınırlara göre kabul edilebilirliğin doğrulanması, komisyonlar/son tarihler hakkında açık metinler.
KYC: fotoğraflar/belgeler, önizleme, dosya boyutu/türü, doğrulama süresi, gizlilik için adım adım gereksinimler.
Sorumlu oyun: "Set limit "/" Yardım "eylemleri ile mesajlar nötr.


13) Antipatterns

Hata ayıklamadan "karakter başına" hataları göster.
Hata üzerine formu sıfırlar.
Alan/kural olmadan "Geçersiz giriş" mesajı.
Yalnızca renk/simge ile kritik bilgiler.
Tek bir alanı doğrulamak için tüm sayfayı kilitleyin.
Çevrimdışı modun yokluğu ve ağ arızaları sırasında tekrarlamalar.


14) Tasarım sistemi belirteçleri (örnek)

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) Uygulama parçacıkları

Satır içi doğrulayıcı ile alan (format + sunucu kontrolü):
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 "Не удалось проверить. Повторите позже.";
}
}
Odak hatası özeti:
ts function focusFirstError() {
const err = document.querySelector('[aria-invalid="true"]');
if (err) err.focus({ preventScroll:false });
}
Taslağı yerel olarak kaydet:
js const saveDraft = debounce(form => localStorage.setItem('draft', JSON.stringify(Object.fromEntries(new FormData(form)))), 500);
form.addEventListener('input', ()=>saveDraft(form));

16) Metrikler ve Kontrol

Tamir zamanı.
Alana ve nedene göre hata oranı (format/limit/sunucu).
Başarı oranını tekrar deneyin.
Terk edilmiş şekillerin oranı ve perde derinliği.
İstemlerle dolu: TO "Ayrıntılar", gizleme istemlerinin sıklığı.


17) KG kontrol listesi

A11y

  • Odak ilk geçersiz alana geçer; 'aria-describedby'/' aria-invalid' kümesi.
  • AA ≥ kontrast; Mesajlar yalnızca renkten bağımsızdır.

Davranış

  • Debunking ile yerleşik doğrulama; Hatalar bulanıklıktan daha önce görünmez (kritik maskeler hariç).
  • Gönderide bir özet oluşturulur, alanlar temizlenmez.
  • Asenkron kontroller sayfayı kilitlemez; Bir zaman aşımı ve bir tekrar var.

Metin

  • Sebep + nasıl düzeltilir; Kod/suçluluk yok.
  • Yerelleştirme düzeni bozmaz; örnekler önemlidir.

Güvenlik

  • Mesajlarda PII sızıntısı yok; hesabın varlığını açıklamayın.
  • Kritik operasyonlar için idempotency.

18) Tasarım sistemindeki belgeler

Bileşenler: 'FieldError', 'FormSummary', 'HelperText', 'BusyButton'.
Tipik alanlar için kural haritaları (e-posta, telefon, şifre, adres, IBAN, tarih).
Hata ayıklama, eşzamansız denetleme ve çevrimdışı davranış için kılavuzlar.
Sık yapılan hatalar ve öncesindeki/sonrasındaki örnekler için metin şablonları.


Kısa özet

Yerleşik doğrulama, öngörücü bakım, açık talimatlar ve verilere karşı dikkatli tutumla ilgilidir. Yerel olarak ve sunucuda kontrol edin, belirli eylemlerle hataları doğru zamanda gösterin, kullanılabilirliğe ve gizliliğe saygı gösterin, ilerlemeyi kaydedin ve hata ayıklamaları kullanın. Böylece formlar dostça olur ve hatalar hızlı ve düzeltilebilir hale gelir.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.