R 17 07


Rozdział 17.
Projektowanie formularzy
W tym miejscu wiesz już niemal wszystko, co jest konieczne do tworzenia
funkcjonalnych, atrakcyjnych i w pewnym stopniu interaktywnych stron WWW. Jeśli
się jednak nad tym głębiej zastanowisz, to okaże się, że przepływ informacji
w tworzonych stronach jest jednokierunkowy. Dokumenty HTML, obrazy, dzwięki oraz
obraz wideo, przekazywał tylko w jedną stronę  do osób przeglądających Twoje strony
WWW przy użyciu przeglądarek.
Ten rozdział dotyczy tworzenia formularzy HTML służących do pobierania informacji
od osób odwiedzających witryny WWW. Formularze umożliwiają zbieranie niemal
wszystkich rodzajów informacji i przekazywanie ich na serwer w celu
natychmiastowego przetworzenia przez skrypt CGI lub pózniejszej analizy
przeprowadzanej przy użyciu innych aplikacji. Jeśli spędzasz wiele czasu na
przeglądaniu zasobów WWW, to bez wątpienia napotkałeś wiele różnych formularzy.
Istnieje ich bardzo wiele: proste formularze służące do przeszukiwania, formularze
umożliwiające zalogowanie się na witrynie, kupowanie produktów za pośrednictwem
Internetu itd. Wszystkie mają jedną cechę wspólną  akceptują informacje podawane
przez osobę oglądającą stronę WWW.
Jeśli zwracasz uwagę na zagadnienia zgodności, to możesz być spokojny. Formularze
były obecne niemal od samego początku istnienia języka HTML i są dobrze
obsługiwane przez wszystkie najpopularniejszej przeglądarki. W tym rozdziale nie
zapomnę wskazać wszelkich, dotyczących problemów, zgodności przeglądarek.
Niech formularze Cię nie przerażają! Choć wiele z nich może wyglądać na
skomplikowane, to w rzeczywistości stworzenie odpowiedniego kodu jest bardzo
proste. Najtrudniejszym zadaniem jest określenie wyglądu formularzy. W tym rozdziale
zostaną przedstawione następujące zagadnienia, które pozwolą Ci na tworzenie
wszelkich możliwych formularzy HTML, w tym:
w jaki sposób formularze HTML współpracują ze skryptami na serwerze w celu
zapewnienia interaktywności,
tworzenie prostego formularza, aby poznać zasady ich konstrukcji,
przedstawienie wszelkich dostępnych form elementów kontrolnych formularzy,
których można używać w celu tworzenia przycisków opcji, pól wyboru, itp.,
zastosowanie bardziej zaawansowanych elementów kontrolnych formularzy, które
478 Część 6. Mapy odsyłaczy i formularze
zadziwią Twych przyjaciół i współpracowników,
planowanie formularzy w celu dopasowania przesyłanych danych ze skryptem
obsługującym je na serwerze.
Forma i funkcja formularzy
Przede wszystkim powinieneś zrozumieć kilka spraw dotyczących formularzy. Na
początek, formularz jest częścią strony WWW tworzonej przy wykorzystaniu
elementów HTML. Każdy formularz składa się z elementu FORM zawierającego
specjalne elementy kontrolne, takie jak przyciski, pola tekstowe, pola wyboru, przycisk
Submit oraz listy. Te elementy kontrolne stanowią interfejs użytkownika formularza
(czyli te elementy formularza, które użytkownik może zobaczyć na stronie WWW).
Użytkownicy, wypełniając formularz, prowadzą interakcję z tworzącymi go elementami
kontrolnymi. Dodatkowo można także korzystać z wielu innych elementów formularzy,
stosując je do tworzenia opisów, wyświetlania dodatkowych informacji, określania
struktury, itp. Te elementy nie są częścią samego formularza, jednak mogą poprawić
jego wygląd i przydatność.
Formularz HTML pozwala na pobranie informacji od osoby odwiedzającej witrynę.
Zgromadzone informacje można przesłać do skryptu umieszczonego na serwerze, w celu ich
przetworzenia lub zapisania.
Gdy użytkownik wypełnia formularz HTML, wpisuje informacje lub wybiera opcje,
posługując się elementami kontrolnymi formularza. Ostatnim krokiem jest przesłanie
formularza. Podczas przesyłania formularza wykonywanych jest kilka czynności. W
pierwszej kolejności przeglądarka określa elementy kontrolne formularza zawierające
jakieś informacje i tworzy zbiór danych, który będzie te informacje zawierał. Następnie
dane z formularza są kodowane i przesyłane na serwer w celu przetworzenia.
Niezwykle ważne jest zrozumienie implikacji tego ostatniego kroku, gdyż to właśnie
dane są najważniejsze. W końcu, były one głównym powodem utworzenia formularza.
Gdy użytkownik kliknie przycisk Submit, cały proces przestaje być wyłącznie procesem
HTML i zostaje uzależniony do skryptów (nazywanych skryptami CGI  Common
Gateway Interface) przechowywanych i wykonywanych na serwerze WWW. Innymi
słowy, aby formularz był użyteczny będziesz musiał zawczasu posiadać na serwerze
odpowiedni skrypt, który pobierze i zapisze dane lub przetworzy je w inny sposób.
Istnieje jednak kilka ważnych wyjątków od tej reguły. Formularz może skierować
użytkownika na inną stronę, w zależności od wprowadzonych informacji lub przesłać
pod wskazany adres wiadomość poczty elektronicznej zawierającej dane wpisane w
formularzu. Ten drugi wyjątek jest bardzo przydatny i stanowi prosty sposób testowania
formularzy. Zamiast stosowania skryptów możesz poinstruować formularz, aby przesłał
dane pocztą elektroniczną pod Twój adres. Ostatnim wyjątkiem jest wykorzystanie
formularzy w Dynamicznym HTML-u, gdzie czasami służą do przechwytywania
zdarzeń generowanych przez użytkowników, takich jak kliknięcie myszką. Formularze
w dynamicznych stronach HTML mogą być wykorzystywane do gromadzenia
informacji, jednak służą także do tworzenia przycisków, których kliknięcie powoduje
wykonanie pewnych czynności.
Rozdział 17. Projektowanie formularzy 479
Ćwiczenie 17.1: Tworzenie prostego formularza
pobierającego nazwę użytkownika i hasło
W porządku, zabierzmy się do pracy i stwórzmy prosty formularz ilustrujący pojęcia
przedstawione w poprzedniej części rozdziału.
Stworzyłam w tym celu stronę WWW, na której najpierw należy podać imię oraz hasło
umożliwiające przejście do dalszej części witryny. Stronę tę przedstawiłam na rysunku 17.1.
Pracę rozpocznij od uruchomienia swego ulubionego edytora HTML (w moim przy-
padku jest to Notatnik) i stworzenia szkieletu strony. Rozpocznij od podania standar-
dowych informacji nagłówka strony, następnie dodaj do niej znacznik i, w koń-
cu, zamykające znaczniki i . W ten sposób powstanie szablon strony,
którą będziesz tworzył w dalszej części ćwiczenia. Jeśli dysponujesz takim gotowym
szablonem, to otwórz go w swoim ulubionym edytorze HTML.
Staram się używać pośredniej (Transitional) wersji języka HTML, zwróć zatem uwagę na
postać deklaracji . Dzięki temu będę mogła korzystać z przestarzałych
znaczników HTML bez obawy przed błędami weryfikacji poprawności kodu.
"http://www.w3.org/TR/xhtml1/DTD/transitional.dtd">


Tytuł




Następnie dodaj tytuł strony, aby osoby odwiedzające ją wiedziały, jakie jest jej prze-
znaczenie:
Wejście na witrynę Webbit Hole
Wewnątrz elementu BODY umieść element FORM. Ja od razu zapisałam zarówno znacz-
nik otwierający, jak i zamykający, umieszczając pomiędzy nimi pusty wiersz; dzięki
temu, pózniej, nie zapomnę zamknąć elementu FORM.
method="post">

Zanim przejdziesz do dalszej pracy powinieneś dowiedzieć się czegoś więcej na temat
elementu FORM oraz atrybutów otwierających znacznik
. Oczywiście,
otwiera element i oznacza, że chcesz stworzyć formularz HTML. Wymagany atrybut
ACTION określa URL (włącznie z nazwą pliku) skryptu przechowywanego na serwerze,
który będzie używany do przetwarzania danych przesyłanych z formularza. Jest nie-
zwykle ważne, aby skrypt o podanej nazwie faktycznie był dostępny na serwerze, w
miejscu określonym przez podany URL.
480 Część 6. Mapy odsyłaczy i formularze
Zanim udostępnisz formularz, powinieneś skontaktować się ze swym dostawcą usługi,
internetowych i zapytać czy możesz korzystać z udostępnianych skryptów lub czy wolno Ci
stosować własne skrypty. Będziesz także musiał określić URL wskazujący na katalog, w
którym skrypty są przechowywane na serwerze. Niektórzy dostawcy usług internetowych
bardzo rygorystycznie sprawdzają skrypty ze względów bezpieczeństwa i nie pozwalają
użytkownikom na tworzenie i umieszczanie na serwerze nowych. Jeśli tak jest w Twoim
przypadku, a na swojej witrynie musisz wykorzystać formularz, to powinieneś zastanowić się
nad poszukiwaniem nowego dostawcy.
Kolejnym atrybutem znacznika jest METHOD. Atrybut ten może przyjmować
dwie wartości: post oraz get, które określają sposób w jaki dane z formularza są prze-
kazywane na serwer. Metoda post powoduje przesłanie danych z formularza na serwer
w nagłówkach żądania HTTP. Natomiast metoda get powoduje dodanie danych do
URL-a podanego w atrybucie ACTION i w większości przypadków jest wykorzystywana
przy przeszukiwaniu zasobów WWW.
Teraz dodasz do formularza kilka elementów kontrolnych i informacji, które ułatwią
użytkownikom wypełnianie formularza. Rozpocznij od dodania wewnątrz elementu
FORM opisu informacji, jakie mają być wprowadzone przez użytkownika, a następnie
dodaj pole tekstowe. Przedstawiony poniżej kod wymaga podania imienia użytkownika
w wyświetlonym polu tekstowym. Na razie nie przejmuj się rozmieszczeniem elemen-
tów, w dalszej części ćwiczenia umieścisz je w tabeli.
method="post">
Podaj swoje imię:

Następnie dodaj kolejny pomocny fragment tekstu i pole służące do podawania hasła:
method="post">
Podaj swoje imię:
Podaj swoje hasło:

Zauważ, iż oba te elementy kontrolne są częścią elementu INPUT. Atrybut TYPE okre-
śla, jaki typ elementu kontrolnego zostanie utworzony. W tym przypadku utworzone
zostanie pole tekstowe oraz pole hasła. Każdy typ elementu kontrolnego (pole tekstowe,
przyciski, pola wyboru) wygląda inaczej na stronie, wykorzystuje inny sposób podawa-
nia informacji (na przykład, wpisanie tekstu lub kliknięcie myszką) oraz jest przesyłany
w innym celu. Każdy z nich zostaje opatrzony nazwą, która odróżnia ten element oraz
jego zawartość od pozostałych elementów kontrolnych formularza. Nazwy określane
przy użyciu atrybutu NAME mogą być dowolne, o ile tylko będą unikalne. (Zazwyczaj
nazwy wszystkich elementów formularzy muszą być unikalne, choć istnieją pewne
wyjątki od tej reguły, które opiszę w dalszej części rozdziału.)
Na koniec, dodaj do formularza przycisk Submit, umożliwiający przesłanie informacje
podanych w formularzu. Dodaj także przycisk Reset czyszczący pola formularza,
z którego użytkownik może skorzystać, gdy popełni błąd lub będzie chciał rozpocząć
wprowadzanie danych od początku.
Rozdział 17. Projektowanie formularzy 481
method="post">
Podaj swoje imię:
Podaj swoje hasło:



Przyciski Reset i Submit są kolejnymi typami elementu INPUT. Zwróć uwagę, iż w każ-
dym z nich podałam atrybut VALUE. W tym przypadku, modyfikuje on tekst wyświetla-
ny na przycisku w przeglądarce. Można także w ogóle nie podawać wartości tego atry-
butu, w takim przypadku przeglądarka wyświetli domyślny tekst zależny od typu
przycisku.
Określając nazwy elementów formularzy oraz tekst wyświetlany na przyciskach, powinieneś
wybierać nazwy przejrzyste i jednoznaczne. Jeśli zrozumienie formularza będzie trudne i
frustrujące, to najprawdopodobniej osoby, od których chcesz uzyskać informacje opuszczą
Twoją witrynę.
Stworzyłeś już formularz i jesteś gotów, by odetchnąć, jeśli jednak wyświetlisz utwo-
rzoną stronę w przeglądarce, przekonasz się, iż nie wygląda zbyt atrakcyjnie. Nadszedł
czas, aby wzbogacić stronę o kilka elementów graficznych, poprawić jej wygląd i umie-
ścić elementy formularza w ładnie sformatowanej tabeli.
Stworzyłam trzy obrazy, które będą wyświetlane na stronie i rozmieściłam je w odpo-
wiedni sposób, wykorzystując tabelę:









Teraz wykreuj kolejną tabelę składającą się z czterech wierszy i dwóch kolumn. W tej
tabeli umieścisz formularz, aby odpowiednio rozłożyć jego elementy.


















482 Część 6. Mapy odsyłaczy i formularze
Teraz dodaj do tabeli elementy formularza  w tym celu umieść znacznik
tuż
za otwierającym znacznikiem . Umieść poszczególne elementy, w odpowied-
nich wierszach tabeli, jak pokazałam na poniższym przykładzie i upewnij się, czy nie
zapomniałeś zapisać zamykającego znacznika .
Zauważ, że trzeci wiersz tabeli został pusty. To dlatego, że oszukuję! Gdy zakończyłam
tworzenie kodu do tego przykładu, doszłam do wniosku, że warto dodać nieco wolnego
miejsca między polem hasła i przyciskami. Po kilku próbach wyrównałam także tekst
umieszczony w tabeli do prawej i zadecydowałam, że każda z kolumn ma mieć szero-
kość 50% całej tabeli. Dodatkowo wyśrodkowałam przyciski w obu kolumnach.

method="post">

















Podaj swoje imię:
Podaj swoje hasło:

Teraz wydaje się, że formularz ma szansę wyglądać sensownie, a zatem warto złożyć
poszczególne elementy kodu strony w jedną całość. I jeszcze kilka ostatnich uwag. Ca-
łość tabeli umieściłam w elemencie DIV i przypisałam jego atrybutowi ALIGN wartość
center, aby cała strona została wyśrodkowana. Zwróć uwagę, w jakich miejscach
strony zostały umieszczone otwierające i zamykające znaczniki
. Aby dodać nie-
co wolnej przestrzeni pomiędzy grafiką a formularze, dodałam nowy wiersz, posługując
się znacznikiem
.
"http://www.w3.org/TR/xhtml1/DTD/transitional.dtd">


Wejście na witrynę Webbit Hole








/>


Rozdział 17. Projektowanie formularzy 483



method="post">

















Podaj swoje imię:
Podaj swoje hasło:




Wymagało to pewnego wysiłku, ale myślę że efekt końcowy przedstawiony na rysun-
ku 17.1 jest całkiem dobry.
Rysunek 17.1.
Prosty formularz HTML
zawierający cztery
elementy zapewnia
dostęp do witryny
Wabbit Hole.
Pole
tekstowe
Pole hasła
Przycisk Submit Przycisk Reset
Aby zakończyć to ćwiczenie. przetestowałam formularz, sprawdzając czy przekazywa-
ne dane są zgodne z oczekiwaniami. Poniżej przedstawiłam postać zbioru danych:
imie=Esmeralda&haslo=nudynapudy
484 Część 6. Mapy odsyłaczy i formularze
Jak widać, jego postać jest dosyć skomplikowana, jednak można się zorientować, że
z każdą nazwą elementu jest skojarzona dana wprowadzona w tym elemencie. Wyko-
rzystując odpowiedni skrypt, przetworzenie danych, manipulowanie nimi i osiągnięcie
z mierzonego rezultatu będzie całkiem proste.
Podstawowe elementy formularzy
Po wykonaniu pierwszego ćwiczenia powinieneś już znać kilka podstawowych technik,
takich jak sposób wykorzystania znacznika
, umieszczania w nim prostych ele-
mentów oraz zastosowanie przycisków Submit i Reset. W tej części rozdziału wspo-
mniane wcześniej zagadnienia zostaną rozszerzone i wyczerpująco opisane. Całość
omawianych tematów zostanie podzielona na dwa główne obszary, pierwszym z nich
będzie znacznik , a drugim  elementy kontrolne tworzone przy wykorzystaniu
znacznika . Po przedstawieniu tych zagadnień, wykonasz bardziej skompliko-
wane ćwiczenie.
Zastosowanie znacznika do tworzenia formularzy
Element FORM stanowi podstawę wszystkich formularzy tworzonych na stronach
WWW, z tego względu bardzo ważne jest, aby dobrze zrozumieć, jak należy go stoso-
wać.
FORM jest elementem blokowym. Aby zrozumieć to pojęcie będziesz, musiał poznać in-
ny, podstawowy model zawartości HTML  elementy wewnątrzwierszowe. Elementy
tego typu, na przykład, oraz stosowane są do modyfikowania postaci tekstu lub
poszczególnych liter. Ze względu na swój charakter, znaczniki te zawierają tekst, które-
go postać modyfikują, na przykład: Kocham tę grę, i mogą zawierać inne,
zagnieżdżone elementy wewnątrzwierszowe. Kocham tę grę to
przykład całkowicie poprawnego kodu HTML.
Elementy blokowe są natomiast większymi strukturami organizacyjnymi (przykładem
takich elementów są formularze i tabele). Można w nich umieszczać dowolną zawartość
stron WWW, elementy wewnątrzwierszowe oraz inne elementy blokowe. Jeśli wyświe-
tlisz w przeglądarce przedstawiony poniżej fragment kodu HTML, to obecność zagnież-
dżonego elementu wewnątrzwierszowego nie spowoduje wyświetlenia go w nowym
wierszu.
Zagnieżdżanie elementów wewnątrzwierszowych nie powoduje
stworzenia nowej linii.

Jednak elementy blokowe, takie jak FORM, powodują wyświetlenie w przeglądarce no-
wego wiersza. W efekcie, jeśli zwracasz uwagę na układ strony, będziesz musiał pamię-
tać, że umieszczenie w jej kodzie otwierającego znacznika elementu FORM spowoduje
wyświetlenie nowego wiersza. Przeanalizuj poniższy fragment kodu:
Nesting inline
Rozdział 17. Projektowanie formularzy 485
Elementy wewnątrzwierszowe, takie jak & , mogą zawierać tekst oraz inne elementy
wewnątrzwierszowe. Elementy blokowe, takie jak
&
, mogą natomiast zawierać
dowolną treść stron WWW, elementy wewnątrzwierszowe oraz elementy blokowe.
Większość elementów blokowych jest wyświetlana w nowym wierszu. W odróżnieniu od
nich elementy wewnątrzwierszowe nie powodują powstania nowego wiersza.

Smakosze pragnący zapoznać się z naszymi
przepisami, będą musieli podać swoje imię i hasło.


Umieszczenie znacznika w przedstawionym miejscu spowoduje dodanie no-
wego wiersza tuż za słowem Smakosze, co w efekcie powoduje pojawienie się niepożą-
danego efektu wizualnego, widocznego na rysunku 17.2.
Rysunek 17.2.
Umieszczenie znacznika
wewnątrz
Znacznik
elementu

wewnątrzwierszowego,
powoduje
takiego jak akapit,
złamanie
powoduje wstawienie
wiersza
nowego wiersza
A zatem podsumowując, element FORM może zawierać dowolną treść, elementy we-
wnątrzwierszowe oraz blokowe. Jest jednak jeden wyjątek od tej zasady  formularzy
nie można zagnieżdżać. A zatem  formularze pojedynczo, proszę!
Składnia używana do tworzenia elementów FORM jest prosta. W większości przypadków
będą używane tylko dwa atrybuty znacznika  ACTION oraz METHOD. Tylko
atrybut ACTION jest konieczny. Przykładową postać elementu FORM przedstawiłam po-
niżej:

treść, elementy kontrolne, inne elementy HTML

Atrybut ACTION określa czynność, jaka ma zostać wykonana po przesłaniu formularza
i zazwyczaj zawiera URL do skryptu CGI przechowywanego na serwerze WWW. Pa-
miętaj jednak, że aby formularz został pomyślnie przesłany, skrypt musi się znajdować
dokładnie w tym miejscu, które podałeś, i działać poprawnie. Choć w większości przy-
padków formularze przesyłają swoje dane do skryptów, to jednak w atrybucie ACTION
możesz podać adres innej strony WWW lub adres poczty elektronicznej. Ta ostatnia
możliwość wymaga użycia składni o następującej postaci:

486 Część 6. Mapy odsyłaczy i formularze
Podanie takiego adresu URL spowoduje dołączenie zbioru danych formularza do listu
poczty elektronicznej, który zostanie wysłany pod adres podany w atrybucie ACTION.
Polecam przesyłanie danych z formularza pod własny adres e-mail, jako formę testowania
formularzy. W ten sposób, przed podłączeniem formularza do skryptu można go sprawdzić i
upewnić się, że przesyła poprawne dane.
Atrybut METHOD może przyjmować jedynie dwie wartości: get lub post. Określają
one, w jaki sposób dane wprowadzone w formularzu zostaną przesłane pod adres poda-
ny w atrybucie ACTION. Formularze wykorzystujące metodę GET dopisują dane do
URL-a podanego w atrybucie ACTION, poprzedzając je znakiem zapytania, a następnie
przesyłają wszystko pod zmodyfikowany adres URL. Metodę tę zazwyczaj wykorzystu-
ją witryny udostępniające narzędzia przeszukiwania zasobów WWW. Gdyby formularz
zawierał pole tekstowe o nazwie poszukiwane i gdyby zostało w nim wpisane słowo
Orangutan, to wynikowy URL mógłby mieć następującą postać:
http://www.jakisurl.com.pl/cgi-bin/szukaj?poszukiwane=Orangutan
Atrybut METHOD nie jest wymagany, a w przypadku, gdy nie zostanie podany, formularz
zastosuje domyślną metodę  GET.
Drugą wartością, jaką można przypisać atrybutowi METHOD, jest post. W odróżnieniu
od GET, która powoduje dopisanie danych do adresu URL i przesłanie wynikowego ad-
resu na serwer, metoda POST po prostu przesyła informacje wpisane w formularz, pod
adres podany w atrybucie ACTION.
Są to wszystkie wiadomości dotyczące elementu FORM, ale dla Ciebie to dopiero począ-
tek. Czy zauważyłeś, że element ten jest w stanie jedynie określić, co należy zrobić
podczas przesyłania formularza? Aby zebrać informacje, będziesz potrzebował elemen-
tów kontrolnych formularzy.
Tworzenie elementów kontrolnych
przy wykorzystaniu elementu INPUT
Nadszedł czas, aby dowiedzieć się, jak należy tworzyć elementy formularzy służące do
gromadzenia danych. Element INPUT pozwala na tworzenie wielu różnych typów ele-
mentów kontrolnych.
Elementy kontrolne to specjalne elementy HTML stosowane w formularzach i służące do
gromadzenia informacji podawanych przez osoby oglądające stronę. Informacje te są
gromadzone w formie zbioru danych, a następnie, w momencie przesłania formularza 
wysyłane pod adres określony w atrybucie ACTION.
Element INPUT składa się wyłącznie ze znacznika otwierającego (), nie ma
żadnej zawartości ani znacznika zamykającego.

Rozdział 17. Projektowanie formularzy 487
W tym przypadku kluczowym zagadnieniem jest dobór odpowiednich atrybutów, które
spowodują utworzenie elementu kontrolnego odpowiedniego typu. Najważniejszym
z nich, jest TYPE, definiujący typ elementu kontrolnego. Dla wszystkich elementów
kon-trolnych, z wyjątkiem przycisków Submit i Reset, wymagane jest także podanie
atrybutu NAME. Określa on nazwę elementu kontrolnego, do której, podczas przesyłania
formularza, zostaną przypisane informacje wpisane w tym elemencie. W dalszej części
tego podrozdziału opiszę różne typy elementów kontrolnych, jakie można tworzyć przy
użyciu znacznika .
Tworzenie pól tekstowych
Pola tekstowe pozwalają na pobieranie od użytkownika niewielkich ilości informacji.
Pola te zawierają pojedynczy wiersz tekstu, w który użytkownicy mogą wpisywać in-
formacje, na przykład, swoje imię lub poszukiwane słowo. W odróżnieniu od innych
elementów kontrolnych, takich jak przyciski opcji (które mogą się znajdować wyłącznie
w dwóch stanach  włączonym lub wyłączonym) bądz listy (których wartości są pre-
definiowane), pola tekstowe dają użytkownikom całkowitą dowolność, jeśli chodzi
o zawartość wpisywanego tekstu.
Pola tekstowe zawsze stanowią część elementu INPUT, umieszczanego wewnątrz ele-
mentu FORM. Ich tworzenie należy rozpocząć od wpisana znacznika ,
umieszczenia w nim atrybutu TYPE i przypisania mu wartości text. Nie zapomnij także
określić nazwy pola, aby skrypt był w stanie przetworzyć jego zawartość. Na rysunku
17.3 przedstawiłam przykład pola tekstowego wraz z towarzyszącym mu opisem
wyjaśniającym, co użytkownik ma w nim wpisać:

Podaj imię swojego zwierzaka:


Rysunek 17.3.
Oto przykład pola
tekstowego
Wygląd pola tekstowego można modyfikować przy użyciu atrybutu SIZE. Przypisanie
mu wartości liczbowej powoduje określenie długości pola tekstowego, wyrażonej jako
ilość znaków w nim widocznych. Oto przykład:

Aby ograniczyć ilość znaków, jakie użytkownik może wpisać w polu, należy dodać do
znacznika atrybut MAXLENGTH. Atrybut określa maksymalną ilość znaków, jaką będzie
można wpisać w polu. Jeśli użytkownik spróbuje wpisać więcej znaków niż dozwolono,
przeglądarka przestanie wstawiać je w danym polu.

488 Część 6. Mapy odsyłaczy i formularze
Aby wyświetlić tekst w polu, zanim jeszcze użytkownik wpisze w nim jakieś informa-
cje, należy wykorzystać atrybut VALUE. Działa on jak prośba kierowana do użytkowni-
ka lub przypomnienie informujące, jakie dane należy wpisać. Oto przykład wykorzysta-
nia tego atrybutu:
value="Podaj imię zwierzaka" />
W tym przypadku, bezpośrednio po wyświetleniu strony z formularzem w przeglądarce,
w polu tekstowym pojawi się napis Podaj imię zwierzaka. Tekst pozostanie w oryginal-
nej postaci aż do momentu, gdy użytkownik go zmodyfikuje.
Korzystając z atrybutu VALUE, pamiętaj, że przypisanie mu wartości przekraczającej
maksymalną dopuszczalną długość pola może wprowadzić użytkownika w błąd, gdyż tekst
wyświetlony w polu zostanie obcięty. Staraj się umieszczać w polu tylko tyle informacji, ile
jest koniecznych, by określić jego przeznaczenie. Upewnij się, że długość podanej wartości
pola nie przekracza maksymalnej dopuszczalnej ilości znaków określonej przy wykorzystaniu
atrybutu MAXLENGTH.
Aby nie można było modyfikować zawartości pola tekstowego, należy dodać do znacz-
nika atrybut READONLY, zgodnie z poniższym przykładem:

Dzięki temu użytkownicy nie będą mogli zmodyfikować wartości pola. Dla pola tek-
stowego warto również zdefiniować stałą wartość domyślną, przekazywaną w chwili
wysłania zawartości formularza.
Tworzenie pól haseł
Pole hasła jest bardzo podobne do pola tekstowego, bo umożliwia podawanie niewiel-
kich ilości informacji. Jednak jest to pole specjalne, gdyż jego zawartość jest wyświe-
tlana w postaci gwiazdek.
Nie musisz ograniczać możliwości zastosowania tego pola wyłącznie do podawania haseł.
Można go używać do podawania wszelkich ważnych informacji, które, według Ciebie,
podczas wpisywania w formularzu powinne zostać ukryte.
Aby utworzyć element kontrolny tego typu, wpisz znacznik i przypisz jego
atrybutowi TYPE wartość password. Aby ograniczyć wielkość pola oraz ilość znaków,
jakie będzie można w nim wpisać, możesz posłużyć się atrybutami SIZE oraz
MAXLENGTH, przedstawionymi w poniższym przykładzie:

Podaj swoje hasło: maxlength="8" />


Na rysunku 17.4 ukazane zostało pole hasła, wraz z opisem wyjaśniającym jego prze-
znaczenie. Zauważ, że w przypadku tego pola nie musisz stosować atrybutu VALUE,
gdyż jego zawartość zostanie zamaskowana podczas wyświetlania w przeglądarce.
Rozdział 17. Projektowanie formularzy 489
Rysunek 17.4.
Pola hasła ukrywają
treść wpisywanych
informacji
Wszelkie informacje przesyłane za pośrednictwem pola hasła nie są w żaden sposób
ukrywane ani szyfrowane; z tego względu, nie jest to bezpieczny sposób przesyłania ważnych
informacji. Choć użytkownicy nie są w stanie odczytać tekstu wpisanego w polu, to jednak
element kontrolny tego typu nie dysponuje żadnymi innymi, wbudowanymi mechanizmami
zabezpieczeń.
Tworzenie przycisków Submit
Przyciski Submit są wykorzystywane do przesyłania danych z formularzy na serwer
w celu ich przetworzenia przez skrypt lub inny program. Przypisanie atrybutowi TYPE
wartości submit powoduje stworzenie przycisku Submit o domyślnym tytule  Prze-
ślij kwerendę. Aby zmienić tekst wyświetlany na przycisku, należy posłużyć się atrybu-
tem VALUE, któremu można przypisać dowolny tekst, jak pokazałam w poniższym przy-
kładzie:

W jednym formularzu może być kilka przycisków Submit.
Tworzenie przycisków Reset
Przyciski Reset są używane do czyszczenia zawartości formularza i przywracania jego
polom ich początkowych wartości domyślnych. W większości przypadków, wartości
domyślne pól określane są podczas tworzenia elementu kontrolnego, przy użyciu atry-
butu VALUE. Podobnie jak w przypadku przycisków Submit, także i w tych, przy użyciu
atrybutu VALUE, można zmieniać wyświetlany na nich domyślny tekst. Oto przykład:

Tworzenie pól wyboru
Pola wyboru umożliwiają tworzenie elementów kontrolnych, które mogą być zaznaczo-
ne bądz nie, symbolizując stany włączenia i wyłączenia (patrz rysunek 17.5). Aby stwo-
490 Część 6. Mapy odsyłaczy i formularze
rzyć pole wyboru, należy przypisać atrybutowi TYPE znacznika wartość
checkbox. Nie zapomnij podać nazwy pola (przy użyciu atrybutu NAME), tak aby skrypt
wiedział, z jakim elementem kontrolnym są skojarzone dane. Poniżej przedstawiłam
przykład wykorzystania pola wyboru:

Zaznacz, jeśli chcesz otrzymywać listy reklamowe:


Aby pole wyboru zostało początkowo zaznaczone, należy dodać do znacznika atrybut
CHECKED, jak pokazałam w poniższym przykładzie:

Pola wyboru można grupować i przypisywać wszystkim, w grupie tę samą nazwę.
Dzięki temu można wybierać wiele wartości i przypisywać je jednej właściwości.
Rysunek 17.5.
Pola wyboru to pola,
które użytkownik
może zaznaczać

Zaznacz wszystkie występujące objawy:

Nudności

Ból głowy
/>
Gorączka

Zawroty głowy />


Gdy taki formularz zostanie przesłany do skryptu w celu przetworzenia, każde zazna-
czone pole wyboru zwróci wartość skojarzoną z nazwą pola.
Tworzenie przycisków opcji
Przyciski opcji są niemal takie same, jak pola wyboru, jednak w przeglądarce są wy-
świetlane w inny sposób. W ich przypadku, zamiast prostokątnego pola, które można
zaznaczać, wyświetlany jest niewielki okrągły (lub czasami w kształcie rombu) przy-
cisk, w którym, po zaznaczeniu, pojawia się kropka (patrz rysunek 17.6). Przyciski
opcji tworzy się przy użyciu znacznika , przypisując jego atrybutowi TYPE
wartość radio. Obowiązkowy atrybut VALUE, przypisuje przyciskowi podaną wartość.
W momencie przesyłania formularza na serwer, wartość przycisku zostanie przesłana,
jeśli został on zaznaczony.

Czy się zgadzasz?


Rozdział 17. Projektowanie formularzy 491
Rysunek 17.6.
Przyciski opcji
są wygodne
przy odpowiedziach typu
tak lub nie albo przy
wybieraniu tylko jednej z
kilku opcji
Gdy co najmniej dwa przyciski opcji będą miały tę samą nazwę, stworzą zbiór wzajem-
nie wykluczających się wartości. Innymi słowy, w takiej grupie tylko jeden przycisk
opcji będzie mógł być zaznaczony. W przedstawionym poniżej fragmencie kodu atrybu-
ty NAME obu przycisków opcji mają wartość plec, co oznacza, że użytkownik może za-
znaczyć tylko jeden z nich. Jeśli użytkownik zaznaczy przycisk Mezczyzna, a następ-
nie uświadomi sobie, że popełnił błąd i zaznaczy przycisk Kobieta, to zaznaczenie
przycisku Mezczyzna zostanie automatycznie usunięte.


Tworzenie przycisków graficznych
Przypisanie atrybutowi TYPE znacznika wartości image spowoduje stworze-
nie przycisku, który będzie miał postać obrazu określonego przy użyciu atrybutu SRC.
Oto przykład:

Na rysunku 17.7 przedstawiony został przycisk w postaci obrazu.
Rysunek 17.7.
Przyciski graficzne
można tworzyć
wykorzystując atrybut
TYPE="image"
Przycisk graficzny
Oprócz przesyłania danych wprowadzonych w formularzu, kliknięcie takiego przycisku
powoduje także przekazywanie na serwer współrzędnych x i y, określających miejsce,
w którym użytkownik kliknął obraz. Dane te są wysyłane w formie nazwa.x =
współ-rzędnaX oraz nazwa.y = współrzędnaY. W przypadku przedstawionego
powyżej kodu, wyniki przesłane na serwer mogłyby mieć następującą postać:
wyslijformularz.x=30&wyslijformularz.y=21
492 Część 6. Mapy odsyłaczy i formularze
Można także nie podawać nazwy przycisku, w takim przypadku zwracane współrzędne
będą miały postać x = oraz y =.
Tworzenie zwyczajnych przycisków
Oprócz przycisków Submit, Reset oraz przycisków graficznych, można także tworzyć
zwyczajne przyciski, którym kliknięcie spowoduje wykonanie wskazanego skryptu
w przeglądarce. Rysunek 17.8 przedstawia przycisk, którego kliknięcie spowoduje wy-
konanie skryptu w przeglądarce. Taki przycisk można stworzyć przy użyciu poniższego
fragmentu kodu:
ONCLICK="sprawdzaj()" />
Rysunek 17.8.
Przycisk można
skojarzyć ze skryptem
wykonywanym
w przeglądarce
W tym przykładzie, został utworzony przycisk o nazwie sprawdz, którego kliknięcie
powoduje wykonanie skryptu. Tekst, jaki zostanie wyświetlony na przycisku, określa
się przy użyciu atrybutu VALUE, w tym przypadku jest to Sprawdz dane.
Możliwości przycisków utworzonych w ten sposób są bardziej ograniczone od możli-
wości przycisków tworzonych za pomocą znacznika ). Przedstawiony poniżej fragment kodu defi-
niuje trzy przyciski różnych typów, zostały one pokazane na rysunku 17.11. Zauważ, że
poszczególne przyciski oddzieliłam od siebie dwoma znacznikami
, aby każdy z
nich został wyświetlony w osobnym wierszu i odsunięty od pozostałych.







Rysunek 17.11.
Znacznik


Użycie znacznika spowoduje wyświetlenie słowa Wyślij pogrubioną czcionką.
Można także stosować obrazy, które zostaną wyświetlone jako przycisk. W tym celu
wystarczy umieścić znacznik wewnątrz elementu BUTTON, jak pokazałam w po-
niższym przykładzie:
Rozdział 17. Projektowanie formularzy 501

Duże pola tekstowe tworzone przy użyciu znacznika , który zakończy cały element. Rysu-
nek 17.12 przedstawia przykład takiego wielowierszowego pola tekstowego.

Proszę wpisać komentarze dotyczące obsługi użytkownika.


Możesz się zastanawiać, gdzie się podział znacznik . Znacznik ten, podobnie jak
znacznik , umożliwiał tworzenie pól tekstowych zawierających pojedynczą linię
tekstu, jednak W3C uznało go za przestarzały. Jego skład ma następującą postać: PROMPT="Informacja dla użytkownika">. Pisząc ten rozdział, przetestowałam użycie
tego znacznika w najnowszej wersji przeglądarki Internet Explorer oraz Netscape Navigator i
okazało się, że znacznik ten nie jest już obsługiwany. A zatem uznałam, że omawianie go nie
będzie konieczne.
Tworzenie list przy użyciu elementów SELECT i OPTION
Element SELECT tworzy listę zbliżoną wyglądem do menu standardowych aplikacji,
z której użytkownik może wybierać opcje. Sam element SELECT służy jedynie do okre-
ślenia wyglądu listy, która może być listą rozwijaną lub przewijaną. Aby stworzyć listę,
konieczne jest umieszczenie w niej przynajmniej jednego elementu OPTION lub OPTGRO-
UP.
Aby stworzyć listę rozwijaną zawierającą opcje zdefiniowane przez elementy OPTION,
powinieneś w pierwszej kolejności zapisać otwierający znacznik
Następnie możesz dodać do niego elementy OPTION definiujące elementy listy:
:

Wybierz położenie:
502 Część 6. Mapy odsyłaczy i formularze


Na rysunku 17.13 przedstawiłam rozwijaną listę zawierającą cztery elementy.
Rysunek 17.13.
Stosując element
SELECT można tworzyć
rozwijane listy
Aby stworzyć listę przewijaną, wystarczy dodać do otwierającego znacznika
Rysunek 17.14 przedstawia listę z rysunku 17.12, do której został dodany atrybut SIZE
o wartości 2. Zauważ, iż lista nie jest już rozwijana, a jej zawartość można przewijać.
Rysunek 17.4.
Przy użyciu elementu
SELECT można także
tworzyć listy przewijane
W tym przypadku element SELECT ograniczył widoczny obszar listy do dwóch opcji.
Aby zobaczyć pozostałe opcje, użytkownicy będą musieli ją przewinąć.
Aby przesłać na serwer informacje inne niż te, które zostały wyświetlone na liście, na-
leży posłużyć się atrybutem VALUE znacznika