Elementul <form></form> ne ajuta sa definim o zona dintr-o pagina ce contine elemente interactive prin care cineva ne poate trimite informatii.

Am vazut ca pentru a accepta date de la cineva trebuie sa folosim tag-ul <input />. Dar acesta trebuie cuprinsa de tag-urile <form></form> care defineste defapt formularul.

Asadar un <input /> are sens doar in interiorul unui element <form></form>.

De exemplu, un formular care ne-ar cere numele, prenumele, o adresa de email si care ar contine si un buton pentru a salva, ar arata astfel:

<form>
    <input type="text" name="nume" placeholder="Nume" />
    <input type="text" name="prenume" placeholder="Prenume" />
    <input type="email" name="email" placeholder="Adresa email" />

    <input type="submit" value="Trimite" />
</form>

Iar rezultatul ar fi:

Intalnim aceleasi elemente de tip <input /> despre care am discuta in lectiile trecute dar toate sunt cuprinse intre tag-urile <form></form>.

Atribute

Cele mai intalnite atribute ale acestui element sunt urmatoarele:

action

Acest atribut este folosit pentru a preciza un URL unde vom trimite informatiile din formular. Daca nu il precizam atunci se va adresa paginii curente.

<form action="https://www.edumo.org/un-url-care-va-primi-informatiile">
    ...
</form>

method

Prin acest atribut putem preciza metoda HTTP prin care vrem sa trimitem informatiile. Exista 4 metode HTTP (get, post, put si delete) dar un formular nu poate folosi decat doua: get sau post. Daca nu precizam nici o valoare formularul va folosi GET.

<form method="get" action="/un-url-care-va-primi-informatiile">
    ...
</form>

Atunci cand folosim post informatiile vor fi trimse la server direct care apoi ne va da un raspuns si acel raspuns va fi incarcat in pagina (o cerere post = a trimite ceva).

Folosind metoda get informatiile vor fi puse in URL (sub forma nume=valoare) si se va face o cerere la server (vom face o cerere get = a primi ceva).

enctype

Acest atribut este folositor doar cand vrem sa permitem cuiva sa incarce un fisier pe site. Daca avem in formular un element input de tipul <input name="fisier" type="file" /> atunci trebuie neaparat sa precizam pe formularul care il cuprinde atributul enctype cu valoarea multipart/form-data:

<form action="/incarca-fisier" method="post" enctype="multipart/form-data" >
    <input name="fisier" type="file" />
    <input value="Trimite" type="submit" />
</form>

Acestea sunt doar cele mai intalnite atribute, pentru lista completa puteti vizita MDN.

In interiorul unui formular nu trebuie neaparat sa avem doar elemente de tip <input />, putem folosi ce vrem, precum paragrafe, imagini, titluri, etc. Dar rostul unui formular este de a trimite date asa ca elementele de tip input sunt cele mai importante.

O cautare pe Google

De exemplu, atunci cand cautam ceva pe www.google.ro se foloseste un formular cu metoda get. Si vedem ca ceea ce cautam se adauga URL-ului atunci cand ajungem pe pagina cu rezultate. De exemplu daca am cauta edumo, formularul ar cere urmatoarea pagina:

https://www.google.ro/search?q=edumo&oq=edumo&ie=UTF-8

Vedem ca dupa semnul ? intalnim q=edumo. Ceea ce inseamna ca pe prima pagina, in interiorul formularului, aveam un element de tip <input /> care avea un atribut name="q", iar valoarea acelui input era edumo. Inseamna ca atunci cand am dat click pe Search, formularul arata astfel:

<form action="/search" method="GET" >
    <input name="q" type="text" value="edumo" />
    <input value="Google Search" type="submit" />
</form>

Folosind acel cod ne putem construi noi un formular care cauta pe Google: