Aby formularz był interaktywny, musisz dodać do niego elementy. Są w nim elementy do wpisywania i wybierania danych, elementy opisujące elementy sterujące, elementy grupujące pola oraz przyciski do przesyłania formularza.
Czym są elementy formularza?
Zobaczysz 2 elementy <input>: <input type="text"> i <input type="file">. Dlaczego wyglądają inaczej?
Na podstawie nazwy elementu i atrybutu type przeglądarki wyświetlają różne interfejsy, stosują różne reguły weryfikacji i zapewniają wiele innych funkcji. Używanie odpowiedniego elementu sterującego formularzem pomaga tworzyć lepsze formularze.
Etykiety elementów formularza
Załóżmy, że chcesz dodać pole, w którym użytkownik może wpisać swój ulubiony kolor.
Aby to zrobić, musisz dodać do formularza element <input>. Ale skąd użytkownik ma wiedzieć, że powinien podać swój ulubiony kolor?
Aby opisać elementy sterujące formularza, użyj symbolu <label> dla każdego z nich.
<label for="color">What is your favorite color?</label>
<input type="text" id="color" name="color">
Atrybut for elementu etykiety pasuje do atrybutu id elementu wejściowego.
Przechwytywanie danych wprowadzanych przez użytkownika
Jak sama nazwa wskazuje, element <input> służy do zbierania danych wejściowych od użytkowników.
<label for="color">What is your favorite color</label>
<input type="text" id="color" name="color">
Jak wspomnieliśmy wcześniej, atrybut id łączy <input> z <label>.
A co z atrybutami nazwa i typ w tym przykładzie?
Atrybut name
Użyj atrybutu name, aby określić dane, które użytkownik wprowadza za pomocą elementu sterującego.
Jeśli prześlesz formularz, ta nazwa zostanie uwzględniona w prośbie.
Załóżmy, że element formularza ma nazwę mountain, a użytkownik wpisał Gutenberg. W takim przypadku żądanie zawiera te informacje w postaci mountain=Gutenberg.
Spróbuj zmienić nazwę elementu sterującego formularza na hill.
Jeśli zrobisz to prawidłowo i prześlesz formularz, w adresie URL będzie widoczny znak hill.
Typ danych wejściowych
Istnieją różne typy elementów sterujących formularza, z których każdy ma przydatne wbudowane funkcje działające w różnych przeglądarkach i na różnych platformach. Na podstawie atrybutu type przeglądarka renderuje różne interfejsy użytkownika, wyświetla różne klawiatury ekranowe, stosuje różne reguły weryfikacji itp. Dowiedz się, jak zmienić typ.
Dzięki temu type="checkbox" przeglądarka renderuje pole wyboru zamiast pola tekstowego.
Pole wyboru ma też dodatkowe atrybuty.
Możesz ustawić atrybut checked, aby wyświetlać go jako zaznaczony.
Możesz wybrać różne typy. Szczegółowe informacje znajdziesz w dalszej części tego modułu.
Zezwalaj na wiele wierszy tekstu
Załóżmy, że potrzebujesz pola, w którym użytkownik może wpisać komentarz.
Czy nie byłoby wspaniale, gdyby mogli wpisać kilka wierszy tekstu?
Taki jest cel elementu <textarea>.
<label for="comment">Comment</label>
<textarea id="comment" name="comment"></textarea>
Wybieranie opcji z listy
Jak udostępnić użytkownikom listę opcji do wyboru?
Możesz to zrobić za pomocą elementu <select>.
<label for="color">Color</label>
<select id="color" name="color">
<option value="orange">Orange</option>
<option value="pink">Pink</option>
</select>
Najpierw dodaj element <select>.
Podobnie jak w przypadku wszystkich innych elementów sterujących formularza, łączysz go z <label> za pomocą atrybutu id i nadajesz mu unikalną nazwę za pomocą atrybutu name.
Pomiędzy tagami otwierającym i zamykającym elementu <select> możesz dodać wiele elementów <option>, z których każdy będzie reprezentować jeden wybór.
Każda opcja ma unikalny atrybut value, dzięki czemu możesz je odróżnić podczas przetwarzania danych formularza.
Tekst w elemencie opcji to wartość czytelna dla człowieka.
Jeśli prześlesz formularz za pomocą tego <select> bez zmiany wyboru, prośba będzie zawierać color=orange. Skąd jednak przeglądarka wie, której opcji użyć?
Przeglądarka używa pierwszej opcji na liście, chyba że:
- Jeden element
<option>ma atrybutselected. - Użytkownik wybiera inną opcję.
Wstępne wybieranie opcji
Za pomocą atrybutu selected możesz wstępnie wybrać jedną opcję. Staje się on wartością domyślną niezależnie od kolejności, w jakiej zdefiniowano elementy <option>.
Elementy sterujące formularza grupy
Czasami trzeba zgrupować elementy sterujące formularza. Możesz to zrobić za pomocą elementu <fieldset>.
<fieldset>
<legend>What is your favorite web technology</legend>
<label for="html">HTML</label>
<input type="radio" name="webfeature" value="html" id="html">
<label for="css">CSS</label>
<input type="radio" name="webfeature" value="css" id="css">
</fieldset>
Czy widzisz element <legend> w elemencie <fieldset>? Do czego Twoim zdaniem służy?
Jeśli Twoja odpowiedź brzmi „aby opisać grupę elementów sterujących formularza”, masz rację.
Każdy element <fieldset> wymaga elementu <legend>, tak jak każdy element sterujący formularza wymaga powiązanego elementu <label>.
Element <legend> musi być też pierwszym elementem w <fieldset>.
Po elemencie <legend> możesz zdefiniować elementy sterujące formularza, które powinny należeć do grupy.
Przesyłanie formularza
Po nauczeniu się, jak dodawać elementy sterujące formularza i grupować je, możesz się zastanawiać, jak użytkownik może przesłać formularz.
Pierwszą opcją jest użycie elementu <button>.
<button>Submit</button>
Gdy użytkownik kliknie przycisk Prześlij, przeglądarka wysyła żądanie na adres URL podany w <form> elementu atrybutu action ze wszystkimi danymi z elementów sterujących formularza.
Zamiast elementu <button> możesz też użyć elementu <input> z atrybutem type="submit". Wprowadzony tekst wygląda i działa tak samo jak <button>.
Zamiast używać elementu <label> do opisywania elementu <input>, użyj atrybutu value.
<input type="submit" value="Submit">
Formularz można też przesłać, naciskając klawisz Enter, gdy pole formularza jest aktywne.
Sprawdź swoją wiedzę
Sprawdź swoją wiedzę o elementach formularza
Jak połączyć <label> z elementem formularza?
for='color' – <label>, a name='color' – <input>.for='color' – <label>, a id='color' – <input>.id='color' – <label>, a for='color' – <input>.name='color' – <label>, a for='color – <input>.Czego używasz w przypadku wielowierszowego elementu sterującego formularza?
<input> z atrybutem type='multi-line'.<text>.<textarea>.<input> z atrybutem type='long'.Jak przesłać formularz?
<button>;Enter.<input> z atrybutem type='submit';