Formularze HTML: 4 dobre praktyki, które warto wdrożyć

Formularze HTML: 4 dobre praktyki, które warto wdrożyć

Formularze HTML to podstawowy element każdej witryny, a jednocześnie kawałek kodu, z którym niełatwo się pracuje. Korzystają z wyspecjalizowanych znaczników i atrybutów, a przy okazji zacierają granicę między statyczną treścią a interakcją z użytkownikiem. Formularze często łamią przyzwyczajenia odwiedzających twoją witrynę czy aplikację i przez to potrafią mocno irytować. Te cztery dobre praktyki pomogą ci, jako deweloperowi albo projektantowi, budować formularze bardziej intuicyjne i mniej frustrujące dla użytkowników.

Nadawaj polom formularza HTML legendę

Trudno uzasadnić użycie znacznika fieldset, jeśli nie nadamy mu nazwy. Powyższy kod poprawimy, opisując fieldset elementem legend. Legenda ląduje na obramowaniu elementu fieldset, który domyślnie takie obramowanie ma.

html
<fieldset>
    <legend>Adresse de facturation</legend>
    <span>Nom</span><input type="text" name="nom"/>
    <span>Prénom</span><input type="text" name="prenom"/>
    <span>Adresse</span><input type="text" name="adresse"/>
    <span>Complément d'adresse</span><input type="text" name="adresse2"/>
    <span>Ville</span><input type="text" name="ville"/>
    <span>Département</span><input type="text" name="departement"/>
    <span>Pays</span><input type="text" name="pays"/>
</fieldset>

⚠️ Stawiaj na etykiety label w formularzach HTML

Opisywanie pól znacznikiem span samo w sobie nie jest błędem, ale znacznik label pasuje do tego zadania zdecydowanie lepiej.

html
<fieldset>
    <legend>Adresse de facturation</legend>
    <label>Nom</label><input type="text" name="nom"/>
    <label>Prénom</label><input type="text" name="prenom"/>
    <label>Adresse</label><input type="text" name="adresse"/>
    <label>Complément d'adresse</label><input type="text" name="adresse2"/>
    <label>Ville</label><input type="text" name="ville"/>
    <label>Département</label><input type="text" name="departement"/>
    <label>Pays</label><input type="text" name="pays"/>
</fieldset>

Dodawaj etykietom atrybut for

Atrybut for pozwala powiązać <label> z konkretnym <input>. Identyfikator pola, z którym chcesz powiązać etykietę, musi być taki sam jak wartość atrybutu for.

html
<fieldset>
    <legend>Adresse de facturation</legend>
    <label for="nom">Nom</label><input id="nom" type="text" name="nom"/>
    <label for="prenom">Prénom</label><input id="prenom" type="text" name="prenom"/>
    <label for="adresse">Adresse</label><input id="adresse" type="text" name="adresse"/>
    <label for="adresse2">Complément d'adresse</label><input id="adresse2" type="text" name="adresse2"/>
    <label for="ville">Ville</label><input id="ville" type="text" name="ville"/>
    <label for="departement">Département</label><input id="departement" type="text" name="departement"/>
    <label for="pays">Pays</label><input id="pays" ype="text" name="pays"/>
</fieldset>

Grupuj opcje selecta znacznikiem optgroup

Optgroup to mało znany element, który pozwala wciąć opcje i nadać im nagłówek. Atrybut label znów jest tu niezbędny.

html
<select>
  <optgroup label="France">
    <option>Paris</option>
    <option>Lille</option>
    <option>Lyon</option>
  </optgroup>
  <optgroup label="Espagne">
    <option>Madrid</option>
    <option>Bercelone</option>
    <option>Valence</option>
  </optgroup>
</select>

Podsumowanie

Dzięki tym wskazówkom lepiej ustrukturyzujesz swoje formularze HTML i łatwiej je sformatujesz, a użytkownicy szybciej się w nich odnajdą. Jeśli ten artykuł ci się przydał, zajrzyj też do tekstu o błędach HTML, których lepiej unikać

A jeśli brakuje ci jeszcze podstaw języka, sekcja o formularzach w artykule Nauka HTML-a przypomina duet <label for> / id oraz atrybut name, bez którego pole nie wyśle niczego.

HTML

Damien Flandrin Web developer od 2010 roku, twórca Gekkode i Email Impact. Każdy artykuł jest sprawdzany na prawdziwym projekcie przed publikacją. Kontakt
Newsletter

Nowe testy, poradniki i projekty — e-mailem.

Powtarzalne testy, wersjonowany kod, datowane wyniki. Nigdy spamu.