Cwicz3_JavaScript_formularze
Transkrypt
Cwicz3_JavaScript_formularze
Ćwiczenie laboratoryjne „Formularze i dane” Tematy ćwiczenia • opracowanie formularzy. Plan Wyniki opracowania zadań pokazywać za pomocą dwóch przeglądarek: • Firefox Mozilla, • Internet Explorer. W przypadku stosowania Firefox Mozilla używać konsoli błędów (Narzędzia/Konsola błędów). Korzystając z Notatnika opracowywać: plik HTML (XML), zewnętrzny plik JS zawierający program w języku JavaScript, zewnętrzny plik CSS. a) Formularze Zadanie Opracować aplikacje - formularz do wprowadzania danych użytkownika. Rodzaj danych pobrać z tabeli wariantów. Aplikacje - formularz w języku HTML musi zawierać napisy wspomagające, pola tekstowe i przycisk "Akceptuj". Po naciśnięciu przycisku sprawdzić, czy wprowadzone są wszystkie dane i wyświetlić odpowiedni komunikat. Opracowanie zadań <skrypt> <pliki JS, CSS> Testowanie <zrzut z przeglądarki> b) Formularz z zegarem Zadanie Realizować na pasku stanu zegar liczący czas wprowadzania danych. Wyświetlić odpowiedni komunikat, jeśli czas wprowadzania danych przekroczy ustawioną granicę. Opracowanie zadań <skrypt> <pliki JS, CSS> Testowanie <zrzut z przeglądarki> Pokazać prowadzącemu wyniki pracy. Tabela wariantów Np 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Imię Tak Nie Tak Tak Tak Tak Nie Tak Tak Nie Tak Tak Tak Tak Nie Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Nie Nie Tak Tak Tak Nie Tak Imię drugie Tak Tak Nie Nie Nie Nie Tak Tak Tak Tak Tak Nie Nie Nie Tak Tak Tak Tak Nie Tak Nie Tak Tak Tak Tak Tak Nie Nie Nie Nie Tak Tak Nazwisko Tak Tak Tak Tak Nie Tak Nie Nie Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Nie Nie Nie Nie Tak Nie Tak Tak Tak Tak Data urodzenia Tak Tak Tak Tak Tak Tak Tak Tak Nie Nie Nie Tak Nie Nie Nie Nie Nie Tak Tak Tak Nie Nie Nie Nie Tak Tak Tak Tak Tak Tak Tak Tak Miejsce urodzenia Nie Nie Nie Nie Tak Tak Tak Tak Nie Tak Tak Nie Tak Tak Tak Tak Tak Nie Nie Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Nie Tak Tak Imię ojca Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Nie Nie Tak Nie Tak Tak Tak Tak Nie Tak Tak Tak Tak Tak Tak Nie Imię matki Nie Tak Tak Tak Tak Nie Nie Nie Tak Tak Nie Tak Tak Tak Tak Nie Tak Tak Tak Nie Tak Nie Tak Tak Tak Tak Tak Tak Nie Tak Nie Nie Sprawozdanie Na każdym zajęciu laboratoryjnym sporządza się za pomocą edytora Word sprawozdanie na bazie materiałów ćwiczenia. Bazowa zawartość sprawozdania musi być przygotowana w domu przed ćwiczeniem (sprawozdanie do ćwiczenia pierwszego jest przygotowywane w czasie ćwiczenia). W czasie ćwiczenia do sprawozdania są dodawane wyniki testowania. Treść sprawozdania: strona tytułowa, spis treści sporządzony za pomocą Word'a, dla każdego punktu rozdziały "Zadanie ", "Opracowanie zadania" (rozdział ze skryptem i komentarzami), "Testowanie" (rozdział z opisem danych wejściowych i wynikami testowania, w tym zrzuty okna przeglądarki). Wzorzec strony tytułowej znajduje się w pliku Strona_tytulowa_stac_Interpr_jezyki_progr_PWSBAiTK.doc. Nazwa pliku ze sprawozdaniem musi zawierać skrót "InterprJP_niestac_", numer ćwiczenia i nazwisko studenta (bez polskich liter, żeby można było archiwizować). Pliki ze sprawozdaniem są przekazywane do archiwum grupy. Wskazówki Realizacja zegara Przykład zawierający realizację zegara na pasku stanu. <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <title>Strona</title> <script type="text/javascript"> ///window.defaultStatus="Pokój"; function zegar() { var czas=new Date(); var g=czas.getHours(); var m=czas.getMinutes(); var s=czas.getSeconds(); window.status=g + ((m<10)? ":0" : ":") + m + ((s<10)? ":0" : ":") +s; } </script> </head> <body> <script type="text/javascript"> setInterval("zegar()",1000); </script> </body> </html> Formularze i dane Formularze HTML zawierają elementy dialogu z użytkownikiem. Dane z formularza można wysyłać do serwera. JavaScript umożliwia sprawdzanie danych i decydowanie o tym, czy wysłać dane czy nie. Do identyfikowania formularza jest zwykle stosowana kolekcja forms, chociaż można zaznaczać formularz identyfikatorem id i identyfikować za pomocą metody document.getElementById(). Wewnątrz kolekcji forms formularz można identyfikować przez indeks, np. document.forms[0]. Najlepiej stosować odwołanie do formularza za pomocą nazwy, np. document.forms["form1"], ponieważ komunikacja z serwerem jest realizowana za pomocą nazw elementów HTML. Przykład nadania nazwy formularzowi: <form name="form1"> ... </form> Do identyfikowania elementów formularza najlepiej stosować kolekcję, tym razem kolekcję elements, a wewnątrz kolekcji elementy identyfikować za pomocą indeksu lub nazwy, na przykład: document.forms["form1"].elements[0] lub document.forms["form1"].elements["elem1"] Indeksowanie elementów umożliwia użycie instrukcji powtórzeń. Pola tekstowe Pola tekstowe języka HTML służą do wprowadzenia danych tekstowych. Istnieją trzy rodzaje pól tekstowych: pola jednowierszowe tekstowe, np.: <input type="text" id="id1" name="elem1" value="Tekst" /> pola hasła, np.: <input type="password" id="id2" name="elem2" value="" /> pola wielowierszowe, np.: <textarea id="id3" name="elem3" value="Tekst testowy" /> Zawartość pola jest udostępniana przez właściwość value. Przykład stosowania pól tekstowych. <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=windows-1250"> <script type="text/javascript"> function akcept1(tf) { window.alert(tf.elements["tekst1"].value); } function akcept2(tf) { window.alert(tf.elements["tekst2"].value); } function akcept3(tf) { window.alert(tf.elements["tekst3"].value); } </script> <title>Formularz</title> </head> <body> <h1 align="center">DANE</h1> <form name="form1"> <hr/> <input type="text" name="tekst1" value="test" /> <input type="button" name="butt1" value="Akceptuj1" onclick="akcept1(this.form)" /> <input type="password" name="tekst2" value="" /> <input type="button" name="butt2" value="Akceptuj2" onclick="akcept2(this.form)" /> <textarea name="tekst3">Tekst testowy, tekst testowy, tekst testowy, tekst testowy, tekst testowy </textarea> <input type="button" name="butt3" value="Akceptuj3" onclick="akcept3(this.form)" /> <hr/> </form> </body> </html> Pola wyboru Pola wyboru języka HTML służą do wprowadzenia opcji "Tak/Nie". Zawartość pola jest udostępniana przez właściwość checked. Przykład stosowania pola wyboru. <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=windows-1250"> <script type="text/javascript"> function akcept1(tf) { window.alert("Pole wyboru jest "+ ((tf.elements["check1"].checked)? "zaznaczone.": "nie zaznaczone.")); } </script> <title>Formularz</title> </head> <body> <h1 align="center">DANE</h1> <form name="form1"> <hr/> <input type="checkbox" name="check1" value="false" /> <input type="button" name="butt1" value="Akceptuj1" onclick="akcept1(this.form)" /> <hr/> </form> </body> </html> Pola wyboru w grupie Pola wyboru w grupie języka HTML służą do wprowadzenia opcji "Tak/Nie" w grupie przycisków. Zaznaczenie jednego z przycisków powoduje odznaczanie innych. Zawartość pola jest udostępniana przez tablicę właściwości checked każdego z elementów. Przykład stosowania pola wyboru w grupie. <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=windows-1250"> <script type="text/javascript"> function akcept1(tf) { var str=""; var nn=tf.elements["radio1"].length; for (var i=0;i<nn;i++) { var wart=tf.elements["radio1"][i]; str += wart.value+": "+wart.checked+"\n"; } window.alert(str); } </script> <title>Formularz</title> </head> <body> <h1 align="center">DANE</h1> <form name="form1"> <hr/> <input type="radio" name="radio1" value="Opcja1" /> <input type="radio" name="radio1" value="Opcja2" /> <input type="radio" name="radio1" value="Opcja3" /> <input type="radio" name="radio1" value="Opcja4" /> <input type="button" name="butt1" value="Akceptuj1" onclick="akcept1(this.form)" /> <hr/> </form> </body> </html> Listy wyboru Listy wyboru języka HTML służą do wprowadzenia zaznaczonego elementu listy. Zawartość elementu listy może być dostępna przez właściwość selectedIndex, która podaje indeks zaznaczonego elementu. W przypadku braku zaznaczeń właściwość selectedIndex ma wartość -1. Kolekcja options[] zawiera dane o elementach listy. Właściwość text elementu options[i] jest wyświetlanym tekstem, właściwość value elementu options[i] równa się tej wartości, która jest wysyłana do serwera, a właściwość property elementu options[i] informuje o tym, czy element jest zaznaczony. Przykład stosowania listy wyboru. <html><head> <meta http-equiv="Content-Type" content="text/html;charset=windows-1250"> <script type="text/javascript"> function akcept1(tf) { var ind=tf.elements["lista"].selectedIndex; if (ind==-1) { window.alert("Brak zaznaczonego elementu."); } else { var elem=tf.elements["lista"].options[ind]; window.alert("Zaznaczono element numer "+(ind+1)+ ". Tekst="+elem.text+". Wartość="+elem.value); } } </script> <title>Formularz</title> </head> <body> <h1 align="center">DANE</h1> <form name="form1"> <hr/> <select name="lista" size="4"> <option value="Opcja1">Tekst1</option> <option value="Opcja2">Tekst2</option> <option value="Opcja3">Tekst3</option> <option value="Opcja4">Tekst4</option> </select> <input type="button" name="butt1" value="Akceptuj1" onclick="akcept1(this.form)" /> <hr/> </form> </body></html> Listy wielokrotnego wyboru Listy wielokrotnego wyboru języka HTML służą do wprowadzenia grupy zaznaczonych elementów listy. Aby wprowadzić wielokrotny wybór, w znaczniku listy musi być ustawiony na wartość "multiple" atrybut multiple, tj. multiple="multiple". W tym przypadku właściwość selectedIndex ma wartość równą indeksowi pierwszego zaznaczonego elementu. W przypadku braku zaznaczeń właściwość selectedIndex ma wartość -1. Zaznaczone elementy można otrzymać za pomocą sprawdzania w cyklu właściwości selected elementów kolekcji options[]. Przykład stosowania listy wielokrotnego wyboru. <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=windows-1250"> <script type="text/javascript"> function akcept1(tf) { var ind=tf.elements["lista"].selectedIndex; if (ind==-1) { window.alert("Brak zaznaczonego elementu."); } else { var str="Elementy:"; var nn=tf.elements["lista"].options.length; for (var i=0;i<nn;i++) { var elem=tf.elements["lista"].options[i]; str+="\nnumer "+(i+1)+". Tekst="+elem.text+ ". Wartość="+elem.value+". Wybór="+ ((elem.selected)?"tak":"nie"); } window.alert(str); } } </script> <title>Formularz</title> </head> <body> <h1 align="center">DANE</h1> <form name="form1"> <hr/> <select name="lista" size="4" multiple="multiple"> <option value="Opcja1">Tekst1</option> <option value="Opcja2">Tekst2</option> <option value="Opcja3">Tekst3</option> <option value="Opcja4">Tekst4</option> </select> <input type="button" name="butt1" value="Akceptuj1" onclick="akcept1(this.form)" /> <hr/> </form> </body> </html> Wyłączanie elementów formularza Do przełączenia aktywności elementów języka HTML służy właściwość disabled. Przykład z wyłączeniem przycisku zatwierdzenia formularza po wprowadzeniu danych. W przykładzie zamiast wysyłania formularza na serwer jest realizowane wyświetlenie komunikatu o zatwierdzeniu. <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=windows-1250"> <script type="text/javascript"> function akcept1(tf) { var ind=tf.elements["lista"].selectedIndex; if (ind==-1) { window.alert("Brak zaznaczonego elementu."); } else { var str="Zaznaczono elementy:"; var nn=tf.elements["lista"].options.length; for (var i=0;i<nn;i++) { var elem=tf.elements["lista"].options[i]; str+="\nnumer "+(i+1)+". Tekst="+elem.text+ ". Wartość="+elem.value+". Wybór="+ ((elem.selected)?"tak":"nie"); } window.alert(str); } } </script> <title>Formularz</title> </head> <body> <h1 align="center">DANE</h1> <form name="form1" action="javascript:alert('Zatwierdzono');"> <hr/> <select name="lista" size="4" multiple="multiple"> <option value="Opcja1">Tekst1</option> <option value="Opcja2">Tekst2</option> <option value="Opcja3">Tekst3</option> <option value="Opcja4">Tekst4</option> </select> <input type="button" name="butt1" value="Akceptuj" onclick="akcept1(this.form)" /> <input type="button" name="butt2" value="Zatwierdź" onclick="this.disabled=true; this.form.submit();" /> <hr/> </form> </body> </html>