Narzędzia internet w 4 ID 5

background image

1

1

JavaScript - wykład 4

Zdarzenia i formularze

Beata Pańczyk

2

Obsługa zdarzeń

• zdarzenia - wszystko co zachodzi w związku z obiektami

JavaScript (np. window) i elementami XHTML. Zdarzenia
generuje np. najechanie myszą i kliknięcie na element,
wybranie elementu formularza, koniec ładowania strony,
itp.

• kiedy zachodzi jakieś zdarzenie (ang. event) –

przeglądarka może wywołać odpowiednią funkcję, która je
obsłuży (ang. event handler)

• XHTML posiada atrybuty: onclick, onmouseover,

onload, służące do prostej obsługi zdarzeń i za pomocą
JavaScript pozwalają modyfikować obsługę zdarzeń
„w locie”

• Zdarzenie może obsłużyć każda funkcja JavaScript
• Funkcje przypisuje się do obiektów lub elementów

XHTML (przez DOM) za pomocą addEventListener()

element.addEventListener(funkcja, zdarzenie, kolejność)

3

Zdarzenia

Mysz

Klawiatura

Logiczne

• Obiekt event - funkcja obsługująca

zdarzenie jako pierwszy argument dostanie
obiekt, który zawiera szczegółowe
informacje o zdarzeniu i pozwala
kontrolować dalszy jego los

4

Mysz

click - element został kliknięty myszą. Który

przycisk został kliknięty można sprawdzić w
obiekcie event; zachodzi również przy aktywacji
elementu z klawiatury.

dblclick - podwójne kliknięcie na element
mousedown i mouseup - bardziej szczegółowa

reakcja na kliknięcie - gdy przycisk został
wciśnięty i puszczony

mouseover i mouseout - przydatne do

pokazywania dynamicznych menu i „dymków”,
działają tylko, gdy użytkownik używa myszy
(niezależne od urządzenia są focus i blur)

5

Klawiatura

keypress - wciśnięcie klawisza

(analogiczne do click); obiekt event będzie
zawierał kod wciśniętego klawisza

keydown i keyup - moment wciśnięcia i

puszczenia klawisza (podobnie jak
mousedown i mouseup)

6

Logiczne

focus i blur - to stan, gdy np. pole tekstowe czeka

na wpisanie tekstu lub odnośnik został zaznaczony
z klawiatury. Te zdarzenia zachodzą, gdy element
zyskuje lub traci focus

load i unload - zachodzą na <body>, gdy

dokument zostanie załadowany do końca (load) i
gdy użytkownik zamknie lub przejdzie do innego
dokumentu (unload); przeglądarki mogą blokować
lub ograniczać działanie unload (broniąc się przed
złośliwymi skryptami), dlatego nie można na nim
polegać.

submit - wysłanie formularza

background image

2

7

Obsługa zdarzeń

• Obsługa zdarzeń – w ciele dokumentu

• Możliwość obsługi w znacznikach:

– <body>

– <a>

– <img>

– <form>

– <input>

– <textarea>

– <select>

8

Funkcja obsługi zdarzenia

• funkcja obsługi zdarzenia - reakcja na zdarzenie

• funkcje obsługi zdarzeń wywoływane atrybutami

onEvent="kod_JavaScript"

umieszczanymi w obrębie znaczników elementów,
do których mają odnosić się śledzone zdarzenia

• funkcja obsługi zdarzenia może przyjmować jedną

z dwu form:

wywołanie funkcji

kod bezpośredni

9

Funkcja obsługi zdarzenia -

przykład

<a

href="url"

onMouseOver = "kod_javascriptu"
onMouseOut = "funkcja_javascriptu()"

>

tekst odsyłacza, który pojawi si

ę

na stronie

</a>

10

Zdarzenie

onMouseOver

i onMouseOut

<a href="http://www.lublin.pl"
onmouseover="confirm('Najpiękniejsze miasto świata!')"
onmouseout="alert('Opuszczasz Lublin?')" > Lublin </a>

11

Zdarzenie

onClick

<a href="http://www.lublin.pl"

onclick="confirm('Poł

ą

czenie z Lublinem')">

Lublin

</a>

12

Zdarzenie

onLoad i unLoad

<body

onload="alert('Witaj !!!')"
onunload="alert('

ś

egnaj!!!')" >

Zdarzenie unload – blokowane przez przeglądarki

background image

3

13

Zdarzenie

onFocus

• Wywoływane w chwili przeniesienia kursora

w pole tekstowe

• Występuje przed zdarzeniem

onBlur

• Znaczniki: <body>, wszystkie elementy

formularzy

• Przykład

<input type="text" name="email"

onfocus="this.value='';">

14

Zdarzenie

onBlur

• Wywoływane w chwili opuszczania pola

tekstowego (po zdarzeniu

onFocus

)

• Znaczniki: <body>, wszystkie elementy

formularzy

• Przykład

<input type="text" name="email"

onfocus="this.value='';"

onblur="sprawdz(this.value);">

15

Zdarzenie

onChange

• Wywoływane w chwili opuszczania pola

tekstowego, którego zawartość została
zmieniona (po zdarzeniu

onFocus

)

• Elementy formularzy: select, text, textarea,

password

• Przykład

<input type="text" name="email"

onchange="sprawdz(this.value);">

16

Zdarzenie

onSelect

• Wywoływane w chwili podświetlenia tekstu

wewnątrz pola tekstowego (po zdarzeniu

onFocus

)

• Elementy formularzy: select, text, textarea,

password

• Przykład

<input type="text" name="email"

onselect="sprawdz(this.value);">

17

Formularze

• Za pomocą JavaScript można w pełni kontrolować

formularze na stronach:

– sprawdzać poprawność danych umieszczonych

w formularzach

– zmieniać zachowanie elementów formularza

(np. pozwalać na wpisywanie tylko cyfr w polu
tekstowym)

– dynamicznie pokazywać i ukrywać jego części.

• Można skorzystać ze zwykłych metod DOM

(getElementById(), nextSibling, itd.), ale W3C
DOM posiada też specjalne metody dostępu do
formularzy, które w praktyce często są łatwiejsze
w użyciu

18

Odnalezienie formularza

• Kolekcja document.forms zawiera wszystkie formularze na

stronie

document.forms[0] - obiekt reprezentujący pierwszy element

<form> na stronie

• jeśli formularz ma atrybut name, to można go wybrać po nazwie

w kolekcji document.forms:

<form name="nazwaformularza"> ...

document.forms['nazwaformularza']

document.forms.nazwaformularza

• W starych skryptach i kursach można spotkać jeszcze bardziej

skrócony zapis document.nazwaformularza — ten sposób jest
niestandardowy, przestarzały i nie będzie działał w każdej
przeglądarce

background image

4

19

Elementy formularza

• Wewnątrz obiektu formularza można odwoływać się do jego pól

po nazwach za pośrednictwem kolekcji elements:

document.forms[0].elements['nazwaelementu']

• lub (w przeciwieństwie do formularzy w obiekcie document)

odwoływać się bezpośrednio po nazwie:

document.forms[0].nazwaelementu

document

links[0]

images[0]

forms[0]

links[1]

elements[0] elements[1] elements[2] elements[3]

20

Zmienna tymczasowa

document.forms, atrybut value

var f = document.forms[0]

• każdy element formularza ma pole form, które

wskazuje formularz, do którego element należy -
szczególnie przydatne przy obsłudze zdarzeń

var textbox =
document.forms[0].przykladowy_element;
textbox.form.inny_element

• prawie każde pole formularza ma atrybut value, który

zawiera jego wartość:

document.forms.daneOsobowe.imie.value

(odczyta zawartość pola o nazwie „imie”)

21

Zdarzenia dla formularza

• submit - zdarzenie generowane przez

element <form> tuż przed wysłaniem
formularza

• onchange, onclick, onkey – zmiany

• onfocus/onblur - aktywacja

22

Właściwości obiektu form

• name

atrybut NAME

• method

atrybut METHOD

• action

atrybut ACTION

• encoding

atrybut ENCTYPE

• target

atrybut TARGET

• length

liczba elementów w formularzu

• elements

tablica elementów składowych
formularza

23

Obsługa formularzy

• Metody obiektu

form

– reset

()

czyści zawartość wszystkich pól
formularza

– submit

() wysyła zawartość formularza

• Przykład wysłania formularza

mojFormularz

document.forms.mojFormularz.submit()

• Obsługa zdarzeń:

onReset

,

onSubmit

24

Właściwości wszystkich elementów

formularzy

• name

łańcuch znaków odpowiadający
nazwie elementu (atrybut NAME)

• value

łańcuch znaków zawierający wartość
elementu (atrybut VALUE)

• type

łańcuch znaków odpowiadający
nazwie typu (atrybut TYPE)

• form

odwołanie do obiektu

form

(formularza), w którym dany element
został umieszczony

background image

5

25

Metody elementów formularzy

• blur

()

sprawia, że dany element przestaje
być aktywny (wszystkie elementy)

• focus

()

uaktywnia dany element
(wszystkie elementy)

• click

()

symuluje kliknięcie myszą obiektu
(

button

,

checkbox

,

radio

,

reset

,

submit

)

• select

()

zaznacza cały tekst w polu
(

password

,

text

,

textarea

)

26

Składniki elementów formularzy

• Obiekty

text

,

password

,

textarea

– defaultValue

łańcuch znaków z

początkową wartością pola

• Obiekt

checkbox

– checked

stan pola (true lub false)

– defaultChecked

stan początkowy

• Obiekt

radio

– length

liczba opcji

– checked

,

defaultChecked

27

Składniki elementów formularzy

• Obiekt

select

– length

liczba opcji

– options

tablica opcji zdefiniowanych
znacznikiem <option>

– selectedIndex

indeks aktualnie

wybranej opcji

• Właściwości elementów tablicy

options

– text

,

value

,

selected

,

defaultSelected

28

Przykład 1 – sprawdzenie

danych w formularzu

<head> ...
<script type="text/javascript" src="formularz.js"></script>
</head><body>
<p>Skrypt sprawdza, czy odpowiednie pola zostały wypełnine oraz czy adres

e-mail został poprawnie wpisany.</p>

<div>
<form enctype="text/plain" method="post"

action="mailto:beatap@pluton.pol.lublin.pl" onsubmit="return
validate_form()">

<table> <tbody>
<tr> <td>E-mail:</td> <td> <input name="email" size="30" maxlength="80"

type="text "/> </td>

</tr>
<tr> <td> Imię/nazwisko: </td> <td> <input name="realname" size="30"

maxlength="80" type="text "/> </td>

</tr>

29

Przykład 1 – sprawdzenie

danych w formularzu

<tr> <td> Temat listu</td> <td> <input name="subject" size="30"

maxlength="80" type="text "/> </td> </tr>

<tr> <td> Treść listu</td> <td> <textarea name="tresc" cols="26"

rows="10"></textarea></td>

</tr>

</tbody></table>

<div><br/>

<input name="submit" value=" Wyślij" type="submit"/>
<input name="reset" onclick="resetform()" value="Wyczyść formularz"

type="reset"/>

</div>

</form> </div>
</body></html>

30

function validate_form() {

validity = true;
if (!check_empty(document.forms[0].realname.value))
{ validity = false; alert('Brakuje imienia i nazwiska...'); }
if (!check_empty(document.forms[0].subject.value))
{ validity = false; alert('Brakuje tematu listu'); }
if (!check_email(document.forms[0].email.value))
{ validity = false; alert('Podany adres e-mail nie jest poprawny'); }
return validity; }

function check_empty(text) { return (text.length > 0); }
function check_email(address) {

if ((address == "") || (address.indexOf ('@') == -1) ||

(address.indexOf ('.') == -1)) return false;

return true; }

Przykład 1 – formularz.js

background image

6

31

Przykład 1

Formularz

32

Przykład 2 – Sprawdzenie danych

33

Przykład 2 – form2.html

<head><script type="text/javascript" src="formularz2.js"></script></head>
<body><h3>Formularz sprawdzający poprawność</h3>
<form enctype="text/plain" name="addform" method="post"

action="mailto:beatap@pluton.pol.lublin.pl" onsubmit="return
submitForms()">

<div><input name="Form" value="Submit Sub" type="hidden"> </div>
<table bgcolor="#7789aa" border="3" cellpadding="2" cellspacing="0">
<tbody><tr><td>E-mail:</td>
<td><input name="Email Address" size="35" maxlength="80"

type="text"></td></tr>

<tr><td>Nazwisko i imię:</td>
<td><input name="First Name" size="35" maxlength="80" type="text"></td></tr>
<tr><td>Adres:</td><td><input name="Address" size="35" maxlength="80"

type="text"></td></tr></tbody></table><br/>

<div> <input value=" Wyślij" type="submit">

<input value="Wyczyść formularz" onclick="resetform()" type="reset">

34

Przykład 2 – formularz2.js

function resetform() { document.forms[0].elements[1]=""; }

function submitForms() {

if (isEmail() && isFname() && isAddress())

if (confirm("\n Czy napewno zamierzasz podać swój adres e-mail?"))

{ alert("\nTwoje dane zostaną teraz wysłane.\n\n Dziękuję za

subskrybcję."); return true;}

else { alert("\n Czy chcesz anulować subskrybcję?");return false}

else return false;}

function isFname() {

if (document.forms[0].elements[2].value == "")

{ alert ("\n Nie wpisałeś swojego nazwiska. \n\n Proszę o uzupełnienie

danych."); document.forms[0].elements[2].focus(); return false;}

return true; }

35

Przykład 2 – formularz2.js

function isEmail() {
if ( document.forms[0].elements[1].value == '') {

alert ("\n Brak adresu e-mail. \n\n Proszę o uzupełnienie.")
document.forms[0].elements[1].focus(); return false;}

if ( document.forms[0].elements[1].value.indexOf ('@',0) == -1 ||

document.forms[0].elements[1].value.indexOf ('.',0) == -1)

{ alert ("\n Błąd w adresie e-mail - \"@\" lub \".\"\nProsze wpisać adres e-

mail ponownie.");

document.forms[0].elements[1].select();

document.forms[0].elements[1].focus();

return false; }

return true;
}
function isAddress() { if (document.forms[0].elements[3].value == "")
{ alert ("\n Brak adresu. \n\nProszę, uzupełnij dane.")

document.forms[0].elements[3].focus(); return false; }

return true; }

36

Przykład 2 - komunikaty

background image

7

37

Przykład 3 -wybór opcji

<head><script type="text/javascript" src="js3.js"></script>
</head>
<body>

<form action="mailto:xx@xxxx.xx?subject=test"

method="post" onsubmit="return wyslijDane(this)">

<h3>Wybierz kolor:</h3>
<p>

<select name="kolor">

<option value="" selected="selected">wybierz kolor</option>
<option value="czerwony">czerwony</option>
<option value="zielony">zielony</option>
<option value="niebieski">niebieski</option>

</select> <br/> <input type="submit" value="wy

ś

lij"/>

</p>

</form>
</body></html>

38

Przykład 3 – plik js3.js

function wyslijDane(form)
{ wybrany=form.kolor.selectedIndex;

if (form.kolor.options[wybrany].value=="")
{ alert("Musisz wybra

ć

kolor");

form.kolor.focus();
return false;

}
return true;

}

39

Przykład 3


Wyszukiwarka

Podobne podstrony:
Narzedzia internet w 1 ID 5 id Nieznany
Narzedzia internet w 3 ID 5 id Nieznany
Narzędzia internet w 5 ID 5
Narzedzia internet w 2 ID 5 id Nieznany
17 Narzedzia internetowe NPF id Nieznany
5 11 2013 Sapa Internet id 3993 Nieznany (2)
poradnik internetocholika id 37 Nieznany
Doroslosc Osob z N I wersja internetowa id 140516
Arkana radiowego internetu 2 id Nieznany (2)
konspekty z internetu id 246070 Nieznany
literatura internet id 270916 Nieznany
Arkana radiowego internetu id 6 Nieznany
cit 2007 w interneciejw id 1173 Nieznany
Gieldy interna id 190819 Nieznany

więcej podobnych podstron