javascr7 

po polsku




Wprowadzenie do JavaScript
Czê¶æ 7










Informacje wprowadzane do formularzy s± bardzo wa¿ne dla wielu stron WWW. Informacja od u¿ytkownika jest czêsto odsy³ana z powrotem do serwera. JavaScript pozwala kontrolowaæ zawarto¶æ informacji zanim zostanie ona przes³ana do serwera. Najpierw pragnê pokazaæ, w jaki sposób formularze mog± byæ kontrolowane. Pó¼niej rzucimy okiem na mo¿liwo¶ci przesy³ania informacji za pomoc± JavaScript lub HTML.


Przede wszystkim musimy utworzyæ prosty skrypt. Strona HTML powinna zawieraæ dwa elementy tekstowe. U¿ytkownik ma wpisaæ swoje nazwisko do pierwszego i adres poczty elektronicznej do drugiego. Mo¿esz wpisaæ dowoln± tre¶æ i klikn±æ na przycisku. Spróbuj tak¿e nie wpisaæ niczego i klikn±æ.


Wpisz swoje nazwisko:




Wpisz adres swojej poczty elektronicznej:






Je¶li chodzi o pierwszy element, gdy nie podasz ¿adnej informacji, otrzymasz komunikat o b³êdzie. Dowolna inna informacja jest poprawna. Oczywi¶cie nie chroni to przed podaniem b³êdnego nazwiska. Przegl±darka akceptuje nawet cyfry. Je¶li wiêc wpiszesz '17', otrzymasz komunikat 'Cze¶æ, 17'!.

Drugi formularz jest nieco bardziej wyrafinowany. Spróbuj wpisaæ jaki¶ prosty ci±g, np. swoje nazwisko. Skrypt nie zadzia³a, dopóki w ci±gu nie znajdzie siê znak @. Kryterium zaakceptowania ci±gu jest znak @. Sam znak @ bêdzie poprawny, choæ raczej ma³o sensowny. Ka¿dy adres poczty elektronicznej zawiera ten znak, wiêc kontrola tego znaku jest odpowiednim sprawdzianem.


Co wykonuje skrypt w przypadku tych dwóch formularzy i jak je sprawdza? Oto jego tre¶æ:



<html>
<head>
<script language="JavaScript">
<!-- Hide

function test1(form) {
if (form.text1.value == "")
alert("Podaj ci±g znaków!")
else {
alert("Cze¶æ "+form.text1.value+"! Informacja poprawna!");
}
}

function test2(form) {
if (form.text2.value == "" ||
form.text2.value.indexOf('@', 0) == -1)
alert("Niepoprawny adres poczty elektronicznej!");
else alert("OK!");
}
// -->
</script>
</head>

<body>
<form name="first">
Wpisz swoje nazwisko:<br>
<input type="text" name="text1">
<input type="button" name="button1" value="Test" onClick="test1(this.form)">
<P>
Wpisz adres swojej poczty elektronicznej:<br>
<input type="text" name="text2">
<input type="button" name="button2" value="Test" onClick="test2(this.form)">
</body>


Najpierw rzuæ okiem na kod HTML w czê¶ci BODY. Tworzymy po prostu dwa elementy tekstowe i dwa przyciski. Przyciski wywo³uj± funkcje test1(...) lub test2(...) zale¿nie od tego, który przycisk jest naci¶niêty. Funkcjom przypisujemy this.form, aby móc pó¼niej adresowaæ w³a¶ciwe elementy w funkcjach.


Funkcja test1(form) sprawdza, czy ci±g znaków jest pusty. Jest to robione za pomoc± if (form.text1.value =="").... 'form' jest zmienn±, która otrzymuje warto¶æ 'this.form' w wywo³aniu funkcji. Warto¶æ wprowadzon± do formularza mo¿emy otrzymaæ u¿ywaj±c 'value' w kombinacji z form.text1. Aby sprawdziæ, czy ci±g jest pusty, porównujemy go z "". Je¶li wprowadzony ci±g równa siê "" oznacza to, ¿e nie wprowadzono ¿adnej informacji. U¿ytkownik otrzyma komunikat o b³êdzie. Je¶li zostanie wprowadzony jaki¶ ci±g znaków, u¿ytkownik otrzyma komunikat potwierdzaj±cy poprawno¶æ.


Problemem jest to, ¿e u¿ytkownik móg³by wpisaæ ci±g spacji. Jest to rozpoznawane jako poprawna informacja! Je¶li chcesz, mo¿esz oczywi¶cie wprowadziæ sprawdzanie takich sytuacji i wykluczyæ je. S±dzê, ¿e jest to ju¿ ca³kiem proste.


A teraz przyjrzyjmy siê funkcji test2(form). Funkcja ta porównuje ponownie wprowadzony ci±g znaków z ci±giem pustym "" aby upewniæ siê, czy cokolwiek zosta³o wpisane. Ale do polecenia if co¶ zosta³o dodane. || jest nazywane operatorem OR. Uczy³e¶ siê o nim ju¿ w czê¶ci szóstej Wprowadzenia.
Polecenie if sprawdza, czy pierwsze lub drugie porównanie jest prawdziwe. Je¶li przynajmniej jedno z nich jest prawdziwe, ca³e polecenie if jest prawdziwe i wykonywane jest nastêpne polecenie. Oznacza to, ¿e otrzymasz komunikat o b³êdzie wtedy, gdy ci±g jest pusty albo nie zawiera znaku @. Druga operacja w poleceniu if sprawdza, czy wpisany ci±g zawiera znak @.







Jakie pojawiaj± siê mo¿liwo¶ci wysy³ania zawarto¶ci formularza. Najprostsz± jest wys³anie za pomoc± poczty elektronicznej. Jest to metoda, której przyjrzymy siê nieco bli¿ej. Je¶li chcesz otrzymaæ od u¿ytkownika zawarto¶æ formularza bez u¿ycia poczty i po przetworzeniu go na serwerze, musisz siê pos³u¿yæ skryptem CGI. Skryptu takiego móg³by¶ potrzebowaæ np. w charakterze systemu wyszukiwawczego (choæby takiego, jak Yahoo), gdzie u¿ytkownik otrzymuje wynik niemal natychmiast po podaniu szukanych ci±gów znaków. Nie musi wcale czekaæ, a¿ osoby obs³uguj±ce serwis przeczytaj± zawarto¶æ formularza. Jest to wykonywane automatycznie przez serwer. JavaScript nie dysponuje takimi mo¿liwo¶ciami. Nawet gdy chcesz utworzyæ ksi±¿kê go¶ci (guestbook), nie mo¿esz zmusiæ serwera aby automatycznie dodawa³ informacjê do istniej±cej strony za pomoc± JavaScript. Tylko CGI potrafi to w tej chwili wykonywaæ. Oczywi¶cie mo¿esz utworzyæ ksi±¿kê go¶ci aktualizowan± za po¶rednictwem poczty elektronicznej. Musisz jednak wpisywaæ dane rêcznie. Ma to sens wtedy, gdy liczba odpowiedzi nie przekracza 1000 dziennie.


Poni¿szy skrypt to czysty kod HTML. JavaScript nie jest tutaj potrzebny! Oczywi¶cie wtedy, gdy nie chcesz weryfikowaæ wprowadzanej tu tre¶ci. Muszê zaznaczyæ, ¿e polecenie mailto nie dzia³a w ka¿dej przegl±darce, ale w wiêkszo¶ci nowszych programów - tak.



<FORM METHOD=POST ACTION="mailto:your_email@goes.here">
<H3>Czy ta strona podoba Ci siê?</H3>
<INPUT NAME="choice" TYPE="RADIO" VALUE="1">Zupe³nie nie.<BR>
<INPUT NAME="choice" TYPE="RADIO" VALUE="2" CHECKED>Strata czasu.<BR>
<INPUT NAME="choice" TYPE="RADIO" VALUE="3">Najgorsze badziewie w ca³ym Internecie.<BR>
<INPUT NAME="submit" TYPE="SUBMIT" VALUE="Wy¶lij odpowied¼">
</FORM>

Gdy w definicji podasz swój adres pocztowy, otrzymasz odpowiedzi za pomoc± poczty elektronicznej. Problem jednak w tym, ¿e odpowied¼ taka mo¿e wygl±daæ na pierwszy rzut oka nieco tajemniczo. Niekiedy wszystkie spacje s± wype³niane znakiem '+', niekiedy '%20'. Moze%20to+wiec+niekiedy+wygladac%20w+taki+sposob. W sieci jest jednak parê programów, które zamieniaj± te hieroglify na nieco bardziej ludzk± postaæ (choæby mail:Formatter - przyp. t³um.).








Jest jeszcze inna sympatyczna rzecz, która mo¿e uczyniæ Twoje formularze nieco bardziej przyjaznymi. Mo¿esz okre¶liæ ju¿ na pocz±tku, na które elementy k³adziemy akcent. Albo mo¿esz nakazaæ przegl±darce sprawdzanie, które informacje od u¿ytkownika s± niepoprawne. Oznacza to, ¿e przegl±darka bêdzie od razu powodowa³a wprowadzenie kursora do okre¶lonego pola formularza, bez ingerencji u¿ytkownika. Mo¿na to wykonaæ za pomoc± nastêpuj±cgo skryptu.
:



function setfocus() {
document.first.text1.focus();
return;
}


Skrypt ten k³adzie nacisk na pierwszy element tekstowy w pokazanym wy¿ej skrypcie. Musisz okre¶liæ nazwê ca³ego formularza, który nosi nazwê first - oraz nazwê konkretnego elementu formularza - tutaj text1. Je¶li chcesz po³o¿yæ akcent na ten element, gdy formularz jest ³adowany, mo¿esz dodaæ w³asno¶æ onLoad do znacznika <body>.
Wygl±da to na przyk³ad tak:



<body onLoad="setfocus()">









-
Czê¶æ 1 -
Czê¶æ 2 -
Czê¶æ 3 -
Czê¶æ 4 -
Czê¶æ 5 -
Czê¶æ 6





Aktualizacja: 11 maja 1996

(c) 1996 by Stefan Koch

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • pajaa1981.pev.pl