walidacja formularzy
Transkrypt
walidacja formularzy
Poprawność formularza Ćwiczenie 1 Utwórz formularz jak na rysunku poniżej Po naciśnięciu przycisku Wyślij, skrypt ma sprawdzić, czy użytkownik podał wszystkie wymagane dane. Wygląd formularza <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <SCRIPT LANGUAGE = JavaScript> <!-- Ukrycie przed przeglądarkami nieobsługującymi JavaScript function przetwarzaj_dane (){ var brakuje_danych = false; var formularz = document.forms[0]; var napis = ""; if (formularz.imie.value == ""){ napis += "imie\n" brakuje_danych = true; } if (formularz.nazwisko.value == ""){ napis += "nazwisko\n" brakuje_danych = true; } if (formularz.kraj.value == ""){ napis += "kraj\n" brakuje_danych = true; } if (formularz.tel.value == ""){ napis += "telefon\n" brakuje_danych = true; } if (!brakuje_danych) formularz.submit(); else alert ("Nie wypełniłeś następujących pól:\n" + napis); } // Koniec kodu JavaScript --> </SCRIPT> </HEAD> <BODY> <H2> <FORM NAME = "formularz1"> Proszę podać swoje dane: <FONT SIZE = "-1"><I><BR> (Pola oznaczone * muszą zostać wypełnione) </FONT></I><BR><BR> <TABLE> 1 <TR><TD><B> Dane personalne:</B> </TD><TD></TD></TR> <TR><TD> imię:</TD><TD> <input type = "text" name = "imie">*</TD></TR> <TR><TD> nazwisko:</TD><TD> <input type = "text" name = "nazwisko">*</TD></TR> <TR><TD><B> Adres:</B></TD><TD> </TD> <TR><TD> ulica:</TD><TD> <input type = "text" name = "ulica"></TD></TR> <TR><TD> nr domu:</TD><TD> <input type = "text" name = "nrdomu"></TD></>TR <TR><TD> kod:</TD><TD> <input type = "text" name = "kod"></TD></TR> <TR><TD> miasto:</TD><TD> <input type = "text" name = "miasto"></TD></TR> <TR><TD> kraj:</TD><TD> <input type = "text" name = "kraj">*</TD></TR> <TR><TD> tel.:</TD><TD> <input type = "text" name = "tel">*</TD></TR> <TR><TD> </TD><TD ALIGN = "right"> </H2> <input type = "button" name = "wyslij" value = " Wyślij! "przetwarzaj_dane()"> </TD></TR> </TABLE> </BODY> </HTML> " onClick = Tablice w JavaScript Tablica to uporządkowana struktura zmiennych związanych wspólną nazwą. Odwołanie do poszczególnych elementów tablicy następuje przez podanie nazwy tablicy oraz indeksu danego elementu, ujętego w nawiasy kwadratowe. W języku JavaScript pierwszy element tablicy ma indeks równy 0. Tablice umożliwiają organizowanie wielu zmiennych w logiczne struktury danych, ułatwiają ich przetwarzanie z wykorzystaniem wbudowanych metod, upraszczają dostęp do poszczególnych wartości tych zmiennych. Stosowane są wszędzie tam, gdzie potrzeba wielu zmiennych (nie musimy wymyślać np. 100 nazw dla nowych zmiennych, wystarczy utworzyć tablicę zawierającą 100 elementów). Do tworzenia tablic służy specjalny obiekt Array( ) oraz słowo kluczowe new. Na przykład deklaracja: Tab = new Array( ) definiuje tablicę Tab o nie określonej długości, natomiast deklaracja: Tab = new Array(4) definiuje tablicę Tab o długości równej 4. Długość tablicy zmienia się dynamicznie, w miarę przypisywania wartości kolejnym komórkom tablicy. Największa wartość użytego indeksu określa długość tablicy (długość 2 tablicy=indeks+l). W tablicy mogą się znajdować komórki nie zdefiniowane. Możliwe jest przypisanie wartości wszystkim komórkom tablicy w momencie jej definiowania. Na przykład deklaracja: Tab = new Array (23,5,7) Tab[0] = 23 Tab[l] = 5 Tab[2] = 7 Długość tablicy (liczbę elementów tablicy) można uzyskać przez wywołanie Tab.length. Jeżeli do powyższej tablicy Tab dodamy jeszcze jedną wartość, np. Tab[6]=100, to Tab.length=7. Tworzenie pustej tablicy: nazwa tablicy=New Array() lub nazwa tablicy=[] Ustalenie rozmiaru tablicy: Tablica=New Array(10) Możemy też utworzyć tablicę, od razu wstawiając do niej wartości: NazwaTablicy= New Array(„Marek”, „Ania”, „Tomek”) Lub NazwaTablicy[„Marek”, „Ania”, „Tomek”] Tab_licz[1,2,3,4,5,6,7,8,9,10] Dostęp do elementu tablicy( dla dalszych obliczeń lub wypisania na ekranie): NazwaTablicy[k]-gdzie k –licznik elementu liczony od 0. Rozmiar tablicy: NazwaTablicy.length Metoda join Składnia: tablica.join(separator) Ta metoda pozwala na złączenie (z ang. join — łączyć) wszystkich komórek tablicy w ciąg znaków, w którym poszczególne wartości oddzielone są znakami separatora. To najwygodniejszy sposób na wylistowanie 3 zawartości tablicy w celu wyświetlania jej na ekranie lub też przekazania do dalszego przetwarzania innej aplikacji, przesłania do serwera itp. Przykład: <script type="text/javascript"> var tablica = new Array(1, 2, 3); var str = tablica.join(", "); document.write(str); </script> Przykłady: 1 var nazwaTablicy=new Array('Marcin', 'Zosia', 'Jaś'); document.write(nazwaTablicy[0]); 2. Każda tablica udostępnia nam właściwość length dzięki której możemy określić długość tej tablicy (ilość elementów). Dzięki temu możemy poznać index ostatniego elementu oraz w łatwy sposób przeprowadzać pętlę po wszystkich elementach naszej tablicy. var Tablica = new Array('Marcin','Ania','Agnieszka','Piotrek','Grześ','Magda') for (x=0; x<Tablica.length; x++) { document.write(Tablica[x] + "<br />"); } 2. Długość tablicy: Metoda push() wstawia nowy element (lub kilka) do tablicy na jej końcu i zwraca długość nowej tablicy <script type="text/javascript"> var tab=new Array('Anna', 'Zosia', 'Jan'); dlugosc=tab.push('Adam', 'Zbyszek') document.write('Długość tablicy: '+dlugosc+'<br />'); document.write(tab) </script> 4 3. Sortowanie tablicy: Sortowanie tablic za pomocą metody sort() Metoda sort() służy do sortowania tablic metodą "bombelkową". Powiedzmy, że mamy tablicę z niepoukładanymi wartościami, i chcemy ją posortować: <script type="text/javascript"> var Tablica = new Array('Marcin','Ania','Piotrek','Grześ') Tablica.sort() document.write( Tablica.join() ); //wypisze się "Ania,Grześ,Marcin,Piotrek" </script> Standardowo Javascript segreguje tablice leksykalnie (czyli tak jak w książce telefonicznej). Powoduje to w niektórych przypadkach nieoczekiwane rezultaty - na przykład 1200 będzie mniejsze od 300 (bo liczy się pierwsza cyfra) itp. Aby móc posegregować naszą tablicę według własnych kryteriów, musimy skorzystać z dodatkowego parametru, który metoda sort() może opcjonalnie przyjmować. Parametr ten jest nazwą naszej funkcji sortującej. Pisząc taką funkcję musimy pamiętać o 3 sprawach: • • • Jeżeli funkcja(a, b) zwróci wartość mniejszą od 0, to wartość a będzie miała mniejszy index od b Jeżeli funkcja(a, b) zwróci 0, to indexy wartości a i b pozostaną bez zmian Jeżeli funkcja(a, b) zwróci wartość większą od 0, to wartość a będzie miała większy index od b Tak więc ogólna postać funkcji sortującej wygląda tak: function porownaj(A, B) { if (A jest mniejsze od B) {return -1} if (A jest większe od B) {return 1} //jeżeli A równa się B return 0 } Przykładowo aby posegregować wartości liczbowe musimy utworzyć funkcję: //tworzymy funkcję do segregacji liczb function porownajLiczby(a, b) { return a - b } var Tablica = Array(100, 10, 25, 310, 1200, 400); document.write('Bez sortowania:'); document.write( Tablica.join() ); document.write('Tablica.sort():'); 5 Tablica.sort() document.write( Tablica.join() ); document.write('Tablica.sort(segregujLiczby):'); Tablica.sort(porownajLiczby) document.write( Tablica.join() ); Działanie powyższego skryptu widać poniżej: Bez sortowania: 100,10,25,310,1200,400 Tablica.sort(): 10,100,1200,25,310,400 Tablica.sort(segregujLiczby): 10,25,100,310,400,1200 Tablice asocjacyjne W javascript także możęmy tworzyć tablice asocjacyjne, czyli tablice, których indeks jest stringiem: var Tablica = new Array() Tablica['chomik'] = "radioaktywny"; Tablica['kot'] = "zmutowany"; Tablica['pies'] = "Super Samson"; Przykład: <script type="text/javascript"> var tablica = new Object(); tablica["Ala"] = "kot"; tablica["Pi"] = 3.1415; document.write(tablica["Ala"] + "<br>" + tablica["Pi"]); </script> Tablice wielowymiarowe Możemy też tworzyć tablice wielowymiarowe - czyli tablice w tablicach. Do czego może się to przydać? Powiedzmy że chcemy manipulować na rekordach dotyczących osób. Możemy wtedy stworzyć tablicę, w której w każdym indeksie będzie rekord (w formie tablicy) zawierająca dane osoby: var Tablica Tablica[0] Tablica[1] Tablica[2] //...itp = = = = []; ['Marcin' , '183']; ['Ania' , '173']; ['Agnieszka' , '170']; document.write('imie: ' + Tablica[0][0] + ', wzrost: ' + Tablica[0][1]); //wypisze się "imie: Marcin, wzrost: 183" 6 document.write('imie: ' + Tablica[1][0] + ', wzrost: ' + Tablica[1][1]); //wypisze się "imie: Ania, wzrost: 173" document.write('imie: ' + Tablica[2][0] + ', wzrost: ' + Tablica[2][1]); //wypisze się "imie: Agnieszka, wzrost: 170" Odwracanie kolejności elementów tablicy przy pomocy metody reverse() Dzięki metodzie reverse() możemy odwrócić elementy naszej tablicy: <script type="text/javascript"> var tablica = new Array("numer 1" , "numer 2" , "numer 3" , "numer 4"); document.write('<strong>Przed:</strong> ' + tablica.join() + '<br />'); tablica.reverse() document.write('<strong>Po:</strong> ' + tablica.join() ); </script> Przed: numer 1,numer 2,numer 3,numer 4 Po: numer 4,numer 3,numer 2,numer 1 Wyliczanie średniej wartości elementów tablicy Znowu musimy polegać tylko na własnym talencie programistycznym ;). Zasada bardzo prosta - dodaj wszystkie elementy tablicy i podziel je przez ilość tych elementów: <script type="text/javascript"> var tablica = new Array(1, 2, 3,4,6); function srednia(tablica) { var suma = 0; for (i=0; i<tablica.length; i++) { suma += tablica[i]; } return (suma/i); //wszystko podzielone przez ilość elementów } document.write(srednia(tablica)); </script> 7