GH GambleHub

Formulare cu mai multe trepte și conservarea contextului

1) Principii

1. Un scop este de mai multe etape naturale. Împărțiți nu după tabele de baze de date, ci după logica utilizatorului: „Date → Confirmare → Completare”.
2. Fiecare pas este un sens complet. Nu zdrobiți prea fin: 3-5 pași sunt optimi.
3. Tranziția nu ar trebui să reseteze contextul. Toate câmpurile, selecțiile și fișierele sunt salvate.
4. Lasă-mă să mă întorc. Înapoi - nici o pierdere de date.
5. Urmăriţi progresul. Bară de progres, antet pas și CTA clar.
6. Utilizatorul poate pleca și reveni. Proiect - local sau pe server.

2) Arhitectura multi-pas

Starea clientului: magazin local (de exemplu, React Context/Redux/Signal) sau stocare temporară ('sessionStorage', IndexedDB).
Starea serverului: creați un draft cu 'draft _ id', salvați după fiecare pas.
Securitate: 'draft _ id' este asociat cu utilizatorul și expiră în N ore; datele sunt criptate în repaus.

Mecanica pasului:
  • „Etapa curentă” - indicele etapei curente;
  • „etape finalizate” - lista completată;
  • „erori” - erori per etapă;
  • 'progres = curent/total'.
js const formState = {
draftId: "d-84f...",
currentStep: 2,
steps: [ { id: "personal", completed: true }, { id: "kyc", completed: false } ],
data: { name:"", idPhoto:null },
lastSaved: Date. now()
}

3) Pas și design aspect

Structura: navigare verticală (desktop )/bara de progres de mai sus (mobil).

Numele vizibil al pasului este "1. Date cu caracter personal” „, 2. Dovada identităţii"

Butoane CTA:
  • Principalul este "Next'/" Continuați".
  • Secundar - „Înapoi”.
  • La ultimul pas - „Complet „/” Trimite „.
Design Progress:
  • Utilizați' aria-curent =” pas”'.
  • Arată% dacă pașii sunt neuniforme.
  • Adăugați un prompt „Poate reveni mai târziu”.

4) Salvați contextul și datele

Autosave

Salvează când:
  • schimbarea câmpului (cu un debunk de 500-1000 ms);
  • Treceți la pasul următor
  • pierderea focalizării filei.
Depozitare:
  • local („LocalStorage ”/IndexedDB) - dacă formularul este scurt;
  • server - pentru CCM/plăți/chestionar.
js const saveDraft = debounce(async (data) => {
await fetch('/api/draft', { method:'POST', body: JSON. stringify(data) });
}, 800);

Recuperare

La deschiderea formularului, căutați un proiect ('draft _ id' sau cheie locală).

Oferta de restaurare:
💡 "S-a găsit proiectul de la 12:42 p.m. Doriți să continuați din locația salvată?
  • În caz de conflict (câmpuri noi) - „proiect de actualizare” cu evidențierea modificărilor.

5) Modele de tranziție UX

Mergeți înainte numai după validarea pasului local.
Înapoi - fără confirmare dacă nu există pierderi de date.
În cazul unei erori de rețea, salvați-o la nivel local, afișați „Restaurare la următoarea conexiune”.
Nu schimbați URL-ul în mod arbitrar: „/form/step/2 ”→ este convenabil pentru navigare/recuperare.
Support 'Ctrl + Enter' pentru o tranziție rapidă la următorul pas.

6) Stări și indicii vizuale

În curs de desfășurare: indicator gri/activ, pasul este clicabil numai dacă cel anterior este finalizat.
Completat: verde căpușă/pictogramă; poate fi deschis pentru editare.
Eroare: contur roșu, text sub câmp și în linia de progres.
Dezactivat - Pași după cel curent sunt ascunse sau indisponibile.

Un exemplu de bară de progres:
html
<nav aria-label = "Progress">
<ol class="steps">
<li class = "done "> <span> 1 </span> Data </li>
<li class = "current" aria-current = "step "> <span> 2 </span> Documents </li>
<li> 3 Verification </li>
</ol>
</nav>

7) A11y și disponibilitatea

'aria-curent = "pas" "pentru pasul activ.
Schimbarea de treaptă este exprimată de 'aria-live =' politicos ''.
Mențineți focalizarea în pasul curent; în timpul tranziției - treceți la antet.
Tab și Enter navigarea este previzibilă; Esc nu ar trebui să piardă contextul.
Pentru bare de progres pas cu pas, utilizați „rol =” listă „”, „rol =” listitem „”, și „aria-etichetă” pentru pas.

8) Eroare și comportament întrerupt

Eșecul rețelei: "Conexiunea pierdută. Datele vor fi salvate local.
Timeout: repetați automat în 3-5 s; pe eșec - proiect offline.
Pauză de sesiune: după autentificare → „Continuați de la ultimul pas”.
Eroare pas: salvați câmpurile parțial umplute, evidențiați cele problematice.

9) Sesiuni paralele și securitate

'draft _ id' este unic per utilizator.
Când deschideți o nouă filă - sugerați "O altă sesiune este deschisă. Actualizați sau continuați aici.
Pentru formulare CCM/financiare, datele sunt criptate pe client (AES/GCM) înainte de a salva proiectul.
Ștergeți proiectele de TTL (de exemplu, 7 zile de inactivitate).

10) iGaming Scenariu Exemple

10. 1 CCM/verificare

1. Date cu caracter personal → 2. Documente → 3. Verifică → 4. Finalizare.

Autosave după încărcarea unei fotografii.
Recuperarea de la etapa de testare după o pauză.
Starea „așteptare pentru confirmare” cu indicator.

10. 2 Plata/depozit

Pași: 1. Suma → 2. Metoda → 3. Confirmare.
Datele metodei sunt stocate între sesiuni.
Puteți reveni la selecția metodei fără a șterge suma.

10. 3 Stabilirea limitelor

Pașii sunt tip limită → valoare → confirmare.
Progresul arată pașii rămași.
După finalizare - ecranul „Va avea efect în”....

11) Măsurători și control

Rata de finalizare:% dintre utilizatorii care au finalizat toți pașii.
Drop-off pe pas: la ce pas pleacă.
Timpul mediu pe pas и Time-to-Complete.
Auto-salva rata de succes.
Rata de recuperare a erorilor - Procentul de recuperare de succes după un eșec.

12) Antipattern

Navigare grea fără „Înapoi”.
Pierderea intrării la repornire.
Sărind peste trepte fără context.
O trimitere comună la 10 ecrane.
Pas eroare - și „Începe din nou”.
Ecran gol după eșecul rețelei.
Bara de progres fără nume semantice („1/4/7”...).

13) Proiectarea tokenurilor sistemului (exemplu)

json
{
"steps": {
"radius": 10,
"gap": 8,
"barHeight": 4,
"activeColor": "#2B9F5E",
"inactiveColor": "#E0E0E0"
},
"autosave": {
"debounceMs": 800,
"retryMs": 3000,
"ttlDays": 7
},
"a11y": {
"ariaLive": "polite",
"focusBehavior": "scrollToTitle"
}
}

Presetări CSS

css
.steps { display:flex; gap:8px; list-style:none; counter-reset:step; }
.steps li { position:relative; flex:1; text-align:center; }
.steps li::before { counter-increment:step; content:counter(step); display:block; width:24px; height:24px; line-height:24px; margin:0 auto 4px; border-radius:50%; background:var(--inactive); color:#fff; }
.steps li. done::before { background:var(--success); }
.steps li[aria-current="step"]::before { background:var(--primary); }

14) Lista de verificare QA

Salvarea și restaurarea

  • Un proiect este creat și actualizat la fiecare pas.
  • La repornire, recuperarea este disponibilă și corectă.
  • Conflictul versiunii este tratat (format vechi/nou).

Navigare

  • „Înapoi” nu pierde date.
  • URL-ul corespunde pasului curent.
  • Bara de progres sincronizată cu starea.

Rețea și offline

  • Offline salvează local și restaurează online.
  • Mesajele de eșec sunt ușor de înțeles și nedistructive.

A11y

  • ' aria-curent =” pas”', 'aria-live = „politicos”' de lucru.
  • Focus trece la antetul pas.

Performanță

  • Tranzițiile sunt instantanee (≤ 100 ms).
  • Economiile asincrone nu blochează UI.

15) Documentația în sistemul de proiectare

Компоненты: 'StepIndicator', 'MultiStepForm', 'AutosaveBanner', 'DraftRecoveryModal'.
Ghiduri pentru stocarea contextului (local vs server), A11y și ARIA atribute.
Șabloane UX: KYC, depozite, limite, chestionare, întoarcere după o eroare.
Do/Don' t cu exemple de eșec de rețea și recuperare de succes.

Scurt rezumat

Forma multi-pas ar trebui să se simtă ca un proces continuu, chiar dacă utilizatorul este distras, repornit pagina, sau a pierdut rețeaua. Salvarea automată, recuperarea, progresul vizibil și retroactivele sigure transformă scenariile complexe (KYC, plăți, limite) în experiențe previzibile și de încredere.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.