Formulare
Formularele sunt o parte esențială a Internetului, oferindu-le utilizatorilor un mod dinamic de a interacționa cu paginile pe care le vizitează. Fie că te-ai conectat pe Github să lucrezi la un proiect interesant sau ți-ai comandat un nou articol de îmbrăcăminte, cu siguranță ai completat un formular.
#Elementul <form>
Indiferent de scopul pentru care construiești un formular, vei folosi elementul <form> pentru a grupa câmpurile pe care utilizatorii le pot completa. Spre exemplu, așa arată un scurt formular de autentificare:
Poate ai observat că în exemplul de mai sus avem mai multe elemente <label> iar la final un buton cu type="submit". Deși nu sunt obligatorii, sunt bune practici despre care vorbim mai jos în articol.
#Elementul <input>
Este cel mai popular element folosit în formulare iar prin atributul type="" putem controla cum se comportă acesta.
Mai jos avem o colecție de input-uri, fiecare cu altă valoare pentru atributul type, ce ne permit să completăm cu text, parole, date calendaristice, să încărcăm fișiere sau să alegem culori:
Pentru a vedea toate valorile posibile pentru atributul type, accesează documentația de pe MDN.
Alte atribute pe care le vei folosi zi de zi pentru elementul <input> sunt:
- required
- marchează câmpul ca fiind obligatoriu.
- disabled
- este folosit în cazul în care vrem ca un câmp să nu mai fie editabil.
- placeholder
- reprezintă textul din input când nu există nicio valoare în el. În momentul în care începi să scrii în input, acest placeholder dispare.
- name
- este folosit pentru a identifica datele din formular. Ne vom folosi de el fie pe FrontEnd (JavaScript) fie pe BackEnd pentru a accesa datele din formular.
- value
- pentru a avea o valoare precompletată. Utilizatorul o poate schimba dacă nu e prezent atributul disabled.
- autofocus
- indică dacă câmpul ar trebui să fie "focused" sau nu.
- inputmode
- atributul acesta indică tipul de tastatură virtuală care îi va apărea utilizatorului când intră de pe telefon.
Mai sus le-am enumerat, dar hai să le și vedem în acțiune:
#Radio input
Un input ceva mai special decât celelalte este <input type="radio"> . Îl vom folosi pentru a alege o singură opțiune din mai multe posibilități predefinite:
Cheia funcționalității de mai sus este atributul name="" care are aceeași valoare pentru inputurile ce le vrem grupate. Mai mult, atributul checked îl putem folosi pentru a avea o anumită opțiune preselectată.
#Elementul <textarea>
Este similar cu <input type="text" /> doar că permite completarea cu text pe mai multe linii:
Toate atributele menționate la input-uri (în afară de type="") sunt valabile și pentru <textarea>
#Elementul <select>
Cu ajutorul elementului <select> îi oferim utilizatorului un "dropdown menu" cu o listă de opțiuni din care poate alege. Gândește-te spre exemplu la un formular de înregistrare în care trebuie să alegi țara de origine:
Opțiunile le specificăm prin elementul <option> care trebuie să primească atributul value="" iar opțional și atributul selected pentru a preselecta opțiunea.
Pe lângă atributele menționate mai sus - multe dintre ele fiind valide pentru elementul select - mai avem și atributul multiple pentru a permita selecție multiplă.
#Bune practici
Așa cum sugerează și numele sunt tehnici de programare care indică cum ar trebui să faci anumite lucruri pentru a avea un rezultat cât mai bun și calitativ.
#Elementul <label>
Cu ajutorul acestui element asociem o descriere unui câmp din formular. Sunt două metode prin care putem folosi corect un label:
- prin atributul for="" care trebuie să aibă aceeași valoare cu atributul id="" al inputului asociat:
<label for="usernameInput"> Username * </label> <input id="usernameInput" name="username" type="text" required />
- adăugând inputul direct în label:
<label> <span> Username * </span> <input id="usernameInput" name="username" type="text" required /> </label>
Este recomandat să adaugăm un label fiecărui <input> pentru că:
- utilizatorului îi va fi mai ușor să înțeleagă ce trebuie completat, iar spre deosebire de un placeholder textul rămâne vizibil și după ce începi să scrii
- dacă apăsăm pe label se va focusa/selecta inputul, lucru extrem de util mai ales pentru dispozitive mobile. Încearcă și tu în demo-ul de mai jos unde primele 2 radio-uri nu au label, deci trebuie să dai click exact pe ele, spre deosebire de următoarele pe care le poți selecta apăsând și pe text:
#Submit button
O altă bună practică este ca fiecare formular să conțină la final un <button type="submit">.
Pe lângă faptul că dând click pe el vom trimite formularul, vom putea să-l trimitem și apăsând ↪ ENTER în oricare input. O interacțiune pe care sigur o folosești zi de zi, dar care ar fi mai greu de implementat fără acest element.