Typy danych wejściowych HTML5: gdzie są teraz?

Opublikowany: 2022-03-10
Szybkie podsumowanie ↬ HTML5 wprowadził trzynaście nowych typów danych wejściowych do formularzy, znacznie zwiększając liczbę różnych pól, które projektanci stron internetowych i programiści mogliby dodać do naszych formularzy. Wszystkie te nowe typy wymagają obsługiwanych przez przeglądarki przeglądarek, a ich absorpcja jest wolniejsza, niż niektórzy z nas by sobie życzyli. Jaki jest stan tych typów pól w 2019 roku? Z których możemy skorzystać, a których nadal należy unikać?

Jedną z wyróżniających się funkcji HTML5 dla wielu projektantów i programistów było dodanie wielu nowych typów danych wejściowych formularzy, które można było wykorzystać. Przez lata byliśmy ograniczeni do używania jednowierszowych danych wejściowych ( type="text" ) i nakładania na JavaScript i instrukcje użytkownika, aby spróbować dokładnie przechwycić prawidłowe dane różnych typów za pomocą tego jednego prostego pola.

HTML5 przyniósł ze sobą nowe wartości atrybutu type , które umożliwiły nam bardziej szczegółowe określenie typów danych, które musieliśmy przechwycić w polu, z obietnicą, że przeglądarka zapewni wtedy interfejs i weryfikację wymaganą do wymuszenia użytkownika na dokładne wypełnienie pola.

Od adresów URL po e-maile i od pól wyszukiwania po daty, mieliśmy nadzieję, że zamiast pisać niewygodnego JavaScript w celu sprawdzenia poprawności tych pól, możemy po prostu zostawić to przeglądarce, aby wykonała za nas tę ciężką pracę. Co więcej, dodając to, co wie o kontekście użytkownika (rodzaj urządzenia, rodzaj interakcji, strefy czasowe itp.), przeglądarka będzie w stanie znacznie lepiej dostosować interfejs do potrzeb użytkownika, niż kiedykolwiek mogliby jako autorzy stron.

Zalecana literatura : UX i HTML5: Pomóżmy użytkownikom wypełnić formularz mobilny

Posiadanie nowych elementów w specyfikacji to jedno, ale tak naprawdę nie znaczy to zbyt wiele, chyba że przeglądarki, z których korzystają nasi odbiorcy, obsługują te funkcje. Te nowe wartości atrybutu type miały tę wielką zaletę, że wracały do type="text" , jeśli przeglądarka nie miała obsługi, ale mogło to również nastąpić kosztem usunięcia imperatywu twórców przeglądarek, jeśli chodzi o implementację tych nowych typów w swoich produktach.

Jest początek 2019 roku, a HTML5 jest aktualną wersją HTML od ponad czterech lat. Które z tych nowych typów zostały zaimplementowane, których możemy użyć i czy są jakichś, których powinniśmy unikać?

  1. Pola wyszukiwania
  2. Pola numeru telefonu
  3. Pola URL
  4. Pola e-mail
  5. Pola liczbowe
  6. Pola zasięgu
  7. Pola kolorów
  8. Pola daty
Więcej po skoku! Kontynuuj czytanie poniżej ↓

1. Pola wyszukiwania

Wejście type="search" jest przeznaczone do użycia w polach wyszukiwania. Funkcjonalnie są one bardzo podobne do podstawowych pól tekstowych, ale posiadanie dedykowanego typu umożliwia przeglądarce zastosowanie różnych stylów. Jest to szczególnie przydatne, jeśli system operacyjny użytkownika ma ustawiony styl pól wyszukiwania, ponieważ umożliwia to przeglądarce dopasowanie stylu pól wyszukiwania na stronach internetowych.

Specyfikacja mówi, że różnica między search a text jest czysto stylistyczna, więc najlepiej jest tego uniknąć, jeśli i tak zamierzasz zmienić styl pola za pomocą CSS. Wydaje się, że jego użycie nie daje żadnej korzyści semantycznej.

Czy mogę użyć wyszukiwania danych wejściowych? Dane dotyczące obsługi funkcji wyszukiwania danych wejściowych w głównych przeglądarkach w witrynie caniuse.com.

Rekomendacje

Użyj type="search" , jeśli zamierzasz pozostawić styl pola wyszukiwania przeglądarce.

2. Pola numeru telefonu

Wejście type="tel" służy do wprowadzania numerów telefonów. Są to jak unikalne nazwy użytkownika używane przez Whatsapp. Jeśli nie masz pewności, zapytaj dziadków.

Na arenie międzynarodowej numery telefonów przybierają wiele różnych formatów, zarówno ze względów technicznych, jak i związanych z lokalizacją. Z tego powodu wejście tel nie próbuje zweryfikować formatu numeru telefonu. Możesz skorzystać z powiązanych narzędzi walidacji, takich jak atrybut pattern w tagu lub metoda JavaScript setCustomValidity() , aby w razie potrzeby wymusić format.

W przeglądarkach na komputery użycie pól telefonicznych wydaje się mieć niewielki wpływ. Na urządzeniach z wirtualnymi klawiaturami mogą być jednak naprawdę przydatne. Na przykład w systemie iOS skupienie danych wejściowych na polu telefonu powoduje wyświetlenie klawiatury numerycznej gotowej do wpisania numeru. Ponadto uruchamiają się mechanizmy autouzupełniania urządzenia i sugerują numery telefonów, które można automatycznie uzupełnić jednym dotknięciem.

Czy mogę użyć input-email-tel-url? Dane dotyczące obsługi funkcji input-email-tel-url w głównych przeglądarkach caniuse.com.

Rekomendacje

Użyj type="tel" dla dowolnych pól numeru telefonu. Jest bardzo przydatny tam, gdzie jest zaimplementowany, i jest bezpłatny, gdy nie jest.

3. Pola URL

Pole type="url" może służyć do przechwytywania adresów URL. Możesz tego użyć, prosząc użytkownika o podanie adresu witryny internetowej, na przykład w katalogu firm. Ciekawostką w polu URL jest to, że przyjmuje tylko pełne, bezwzględne adresy URL. Nie ma opcji, aby na przykład przechwycić tylko nazwę domeny lub tylko ścieżkę. Pod pewnymi względami ogranicza to jego użyteczność, ponieważ wyobrażam sobie, że twórcy CMS i aplikacji internetowych znaleźliby wiele zastosowań dla pola, które akceptuje i weryfikuje ścieżki względne.

Chociaż byłby to prawidłowy bezwzględny adres URL:

 https://twitter.com/drewm

Oba z nich nie przeszłyby weryfikacji pola:

 smashingmagazine.com /2019/01/css-multiple-column-layout-multicol/

Wydaje się, że nie można określić różnych części adresu URL, ale to właśnie mamy. Obsługa przeglądarek jest na całym świecie całkiem niezła, a urządzenia z wirtualną klawiaturą oferują pewne dostosowanie do wprowadzania adresów URL. iOS dostosowuje swoją klawiaturę za pomocą . , / oraz przycisk autouzupełniania dla popularnych domen TLD, takich jak .com i dla mojego języka .co.uk . To dobry przykład na to, że przeglądarka może oferować bardziej inteligentne opcje niż my jako twórcy stron internetowych.

Czy mogę użyć input-email-tel-url? Dane dotyczące obsługi funkcji input-email-tel-url w głównych przeglądarkach caniuse.com.

Rekomendacje

Użyj type="url" , gdy chcesz zebrać pełny, bezwzględny adres URL. Obsługa przeglądarek jest świetna, ale pamiętaj, że nie jest dobra dla poszczególnych składników adresu URL.

4. Pola e-mail

Prawdopodobnie jedną z najczęściej używanych nowszych opcji jest type="email" dla adresów e-mail. Podobnie jak widzieliśmy z numerami telefonów i adresami URL, urządzenia z wirtualną klawiaturą dostosowują klawisze (włączając takie elementy jak przyciski @ ) i włączają autouzupełnianie z bazy danych kontaktów.

Korzystają z tego również przeglądarki komputerowe, a Safari w systemie macOS umożliwia również automatyczne wypełnianie pól e-mail na podstawie danych w systemowej aplikacji Kontakty.

Adresy e-mail często wydają się mieć bardzo prosty format, ale różnice w rzeczywistości czynią je dość złożonymi. Naiwna próba sprawdzania poprawności adresów e-mail może spowodować, że doskonale dobry adres zostanie oznaczony jako nieprawidłowy, więc wspaniale jest móc oprzeć się na bardziej wyrafinowanych i dobrze przetestowanych metodach sprawdzania poprawności w przeglądarce, aby sprawdzić format.

Przydatne jest dodanie multiple atrybutów do pól e-mail, aby zebrać listę adresów e-mail. W takim przypadku każdy adres e-mail na liście jest indywidualnie weryfikowany.

 <input type="email" multiple> 

Czy mogę użyć input-email-tel-url? Dane dotyczące obsługi funkcji input-email-tel-url w głównych przeglądarkach caniuse.com.

Rekomendacje

Użyj type="email" dla pól adresu e-mail, gdy tylko jest to możliwe.

Połączony zrzut ekranu przedstawiający trzy niestandardowe klawiatury oferowane przez Safari na iOS dla telefonów, e-maili i pól liczbowych.
Safari na iOS pokazuje niestandardowe klawiatury między innymi dla telefonu, poczty e-mail i pól liczbowych. (duży podgląd)

5. Pola liczbowe

Pole type="number" jest przeznaczone dla wartości liczbowych i posiada kilka bardzo przydatnych atrybutów w postaci min , max i step . Prawidłowa wartość pola liczbowego musi być liczbą zmiennoprzecinkową między dowolną wartością minimalną i maksymalną określoną przez atrybuty min i max .

Jeśli ustawiony jest step , to poprawna wartość jest podzielna przez wartość kroku.

 <input type="number" min="10" max="30" step="5">

Prawidłowe dane wejściowe dla powyższego pola to 10 , 15 , 20 , 25 i 30 , przy czym każda inna wartość zostanie odrzucona.

Obsługa przeglądarek jest szeroka, ponownie z wirtualnymi klawiaturami często domyślnie ustawionymi na tryb wprowadzania numerycznego do wprowadzania wartości.

Niektóre przeglądarki komputerowe (w tym Chrome, Firefox i Safari, ale nie Edge) dodają przyciski przełączania służące do przesuwania wartości w górę i w dół o wartość step , lub jeśli nie określono kroku, domyślnym krokiem jest 1 w każdej implementacji.

Czy mogę użyć numeru wejściowego? Dane dotyczące obsługi funkcji wprowadzania numeru w głównych przeglądarkach w witrynie caniuse.com.

Rekomendacje

Użyj type="number" dla dowolnych liczb zmiennoprzecinkowych, ponieważ jest to powszechnie obsługiwane i może pomóc zapobiec przypadkowemu wprowadzeniu.

6. Pola strzeleckie

Mniej oczywiste w użyciu, że niektóre inne typy, type="range" mogą być traktowane jako alternatywa dla type="number" , gdy użytkownik nie dba o dokładną wartość.

Pola zakresów przyjmują i często używają tych samych atrybutów min , max i step co pola liczbowe, a przeglądarki prawie powszechnie wyświetlają to jako suwak graficzny. Użytkownik niekoniecznie musi zobaczyć dokładną wartość, którą ustawia.

Pola zakresów mogą być przydatne w przypadku pytań w formularzach typu „Jak prawdopodobne jest, że polecisz to znajomemu?” z „Prawdopodobnie” na jednym końcu i „Mało prawdopodobne” na drugim. Użytkownik może przesunąć suwak w dowolne miejsce, które według niego reprezentuje jego opinię i pod maską, która zostanie przesłana jako wartość liczbowa, którą można przechowywać i przetwarzać.

Obsługa przeglądarek jest dobra, chociaż wygląd różni się w zależności od implementacji.

Czy mogę używać zakresu wejściowego? Dane dotyczące obsługi funkcji zakresu wejściowego w głównych przeglądarkach z caniuse.com.

Rekomendacje

Zastosowania dla type="range" mogą być nieco niszowe, ale wsparcie jest dobre, a suwak zapewnia przyjazną dla użytkownika metodę wprowadzania danych tam, gdzie jest to właściwe.

7. Pola kolorów

Pole type="color" służy do przechwytywania kolorów RGB w notacji szesnastkowej, takiej jak #aabbcc . Specyfikacja HTML nazywa to „kontrolą kolorów”, z zamiarem, aby przeglądarka zapewniała pewnego rodzaju przyjazny dla użytkownika selektor kolorów.

Niektóre przeglądarki to zapewniają, w szczególności Chrome i Firefox, które zapewniają dostęp do systemowego próbnika kolorów za pomocą małej próbki koloru.

Ani IE, ani Safari nie zapewniają tutaj żadnego wsparcia, pozostawiając użytkownikowi zorientowanie się, że powinien samodzielnie wprowadzić 7-cyfrową liczbę szesnastkową.

Pola kolorów mogą znaleźć zastosowanie w motywach do personalizacji i w użyciu CMS, ale jeśli użytkownicy nie są wystarczająco techniczni, aby poradzić sobie z kodami kolorów szesnastkowych, lepiej nie polegać na przeglądarce, która zapewnia dla nich ładny interfejs użytkownika.

Czy mogę używać koloru wejściowego? Dane dotyczące obsługi funkcji wprowadzania koloru w głównych przeglądarkach z caniuse.com.

Rekomendacje

Jeśli nie wiesz, że Twoi użytkownicy z przyjemnością wrócą do wprowadzania szesnastkowych kodów kolorów, najlepiej nie polegać na przeglądarkach obsługujących type="color" .

Połączony zrzut ekranu przedstawiający różne wizualne reprezentacje pól zakresu, koloru i daty w trzech różnych przeglądarkach: Edge, Firefox i Chrome.
Pola zakresu, koloru i daty wyświetlane w Edge, Firefox i Chrome. (duży podgląd)

8. Pola daty

HTML5 wprowadził wiele różnych wartości type do tworzenia danych wejściowych dla dat i godzin. Należą do nich date , time , data-godzina datetime-local , month i week .

Na pierwszy rzut oka wydają się one wysłane z nieba, ponieważ zbieranie dat w formularzu jest trudnym doświadczeniem zarówno dla programisty, jak i użytkownika, i są one dość często potrzebne.

Obietnicą jest to, że nowe typy pól umożliwiają przeglądarce zapewnienie standardowego, dostępnego i spójnego interfejsu użytkownika do łatwego przechwytywania dat i godzin od użytkownika. Jest to naprawdę ważne, ponieważ formaty daty i czasu różnią się na całym świecie w zależności od języka i lokalizacji, więc przyjazny interfejs przeglądarki, który tłumaczy łatwy w użyciu wybór daty na jednoznaczny techniczny format daty, naprawdę brzmi jak idealne rozwiązanie .

W związku z tym prawidłowe dane wejściowe dla pola type="date" to jednoznaczna wartość rok-miesiąc-dzień , taka jak 2019-01-16 . Deweloperzy tacy jak ci, ponieważ mapują prawie do formatu daty ISO 8601, który jest używany w większości kontekstów technicznych. Niestety, niewielu zwykłych ludzi używa tego formatu daty i raczej nie sięga po niego, gdy zostanie poproszony o podanie daty w pojedynczym pustym polu tekstowym.

I oczywiście pojedyncze puste pole tekstowe jest tym, co przedstawia się użytkownikowi, jeśli jego przeglądarka nie zapewnia interfejsu użytkownika do wybierania dat. W takich przypadkach bardzo trudno jest użytkownikowi wprowadzić prawidłową wartość daty, chyba że zna wymagany format lub dane wejściowe są opatrzone wyraźnymi instrukcjami.

Jednak wiele przeglądarek zapewnia dobry interfejs użytkownika do wybierania dat. Firefox ma naprawdę doskonały selektor dat, a Chrome i Edge mają również całkiem niezłe interfejsy. Jednak nie ma obsługi w słabym starym IE i żadnej w Safari, co może być problemem.

Czy mogę użyć input-datetime? Dane dotyczące obsługi funkcji input-datetime w głównych przeglądarkach z caniuse.com.

Rekomendacje

Chociaż jest to wygodne tam, gdzie to działa, tryb błędu type="date" i powiązane z nim typy daty i godziny są bardzo słabe. To sprawia, że ​​jest to ryzykowny wybór, który może sprawić, że użytkownicy będą mieli trudności ze spełnieniem kryteriów walidacji.

Wniosek

Wiele zmieniło się w krajobrazie przeglądarek w ciągu czterech lat, odkąd specyfikacja HTML5 stała się rekomendacją. Obsługa nowszych typów danych wejściowych jest dość silna — szczególnie w urządzeniach mobilnych z klawiaturami wirtualnymi, takich jak tablety i telefony. W większości przypadków te wejścia są bezpieczne w użyciu i zapewniają użytkownikowi dodatkową użyteczność.

Istnieje kilka godnych uwagi wyjątków, z których najgorszym są pola daty i czasu, które nie tylko nie mają użyteczności, ale także obsługują bardziej niestabilne przeglądarki. Gdy obsługa nie jest dostępna, tryb awaryjny tych pól jest słaby. W takich przypadkach najlepszym rozwiązaniem może być pozostanie przy rozwiązaniach opartych na języku JavaScript w celu stopniowego ulepszania podstawowych pól wejściowych type="text" .

Jeśli chcesz przeczytać więcej, gorąco polecam dokumentację internetową MDN dotyczącą tych typów pól i jak zawsze specyfikację W3C.