OBJEKT FORM

Omogoča uporabniku vnos besedila (text, texarea...) ali izbiro (button, radio...) v elementih objekta form, lahko pa ga uporabimo tudi za prenos podatkov na strežnik.

Vsako polje v HTML dokumentu označeno s <Form> je objekt zase. Za definicijo objekta uporabimo standarden HTML stavek. Z zapisom

<FORM NAME="myForm">
</FORM>

se kreira forma z imenom myForm.

NAME="formName" specificira ime objekta form, v našem primeru myForm, ki ga lahko izpišemo s stavkom:

document.write("document.myForm.name").

Lahko definiramo več form v istem dokumentu, začetek in konec posamezne forme nam predstavljata znački <FORM> in </FORM>. Znotraj forme lahko z značko <INPUT> definiramo poljubno število enega izmed naslednjih objektov, ki so tudi lastnosti objekta form:

- Button
- Checkbox
- File
- Hidden
- Image
- Password
- Radio
- Reset
- Submit
- Text

Če npr. napišemo

<FORM NAME="myForm">
<INPUT TYPE="text" NAME="firstName" SIZE=20>
<INPUT TYPE="button" VALUE="gumb" NAME="gumb" onClick="alert('Živjo!')">
</FORM>,
se nam na ekranu pokažeta objekta text in button:

Na podoben način kot smo izpisali ime forme, lahko izpišemo še ime objekta text :

document.write("document.myForm.elements[0].name").

Namesto imena elementa lahko pišemo elements[i], pri čemer je i+1 zaporedna številka elementa. V isti formi imamo lahko tudi različne tipe elementov z istim imenom NAME="elementIme". Potem se avtomatično kreira vrsta "elementIme" in na elemente se moramo sklicevati z elementIme[i], pri čemer je i ustrezen indeks.

Z uporabo značke <SELECT> lahko definiramo objekt sellect list. Če napišemo

<FORM>
 <SELECT>
   <OPTION>Jazz 
   <OPTION SELECTED>Blues
   <OPTION>Regae
 </SELECT>
</FORM>
se nam na ekranu izpiše
Tu si lahko izberemo le eno zvrst, ker pa so nam vseč vse, v značko SELECT napišemo še "MULTIPLE". Potem jih lahko izberemo več.

Z značko TEXTAREA

 
<FORM>
<TEXTAREA NAME="item_description" ROWS="6" COLS="55">
</TEXTAREA>
</FORM>
pa lahko kreiramo tekstovno polje poljubne velikosti, v katerega lahko pišemo poljubno dolge vrstice:

ali pa je dolžina vrstice fiksna ( dodamo WRAP="soft" ):

Ko v neko formo vpišemo vse podatke, jih želimo posredovati naprej.

Primer

Najlažji način je pošiljanje podatkov preko elektronske pošte:

<FORM METHOD=post ACTION="mailto:tu.je@tvoj.naslov" ENCTYPE="text/plain">
Ti je všeč ta stran?
  <INPUT NAME="choice" TYPE="radio" VALUE="1">Not at all.
<INPUT NAME="choice" TYPE="radio" VALUE="2" CHECKED>Waste of time.<br> <INPUT NAME="choice" TYPE="radio" VALUE="3">Worst site of the Net.<br> <INPUT NAME="submit" TYPE="submit" VALUE="Send"> </form>

Pri tem smo uporabili lastnost objeka Form ENCTYPE="text/plain", da pošljemo samo tekst in lahko pošto potem res preberemo.

Da omogočimo, da podatke, ki jih uporabnik vstavi, potem uporabljamo, uporabimo "Submit" gumb, ki je lahko gumb definiran kot <INPUT TYPE="SUBMIT"> ali <INPUT TYPE= "IMAGE">. Kaj se zgodi, ko uporabnik pritisne "Submit" gumb, je definirano z ACTION pripisom. Vrednost od ACTION je ponavadi URL naslov, ki kaže na nek CGI program. CGI program poteka na serverju, argumente program dobi iz forme. Vrednost od METHOD je lahko "send" ali "get". Več informacij o tem: http://hoohoo.ncsa.uiuc.edu:80/cgi/overview.html

V form znački lahko nastopa tudi onSubmit, njegova vrednost je JavaScript zapis ali funkcija, ki se izvede, ko pritisnemo "Submit" gumb. Če JavaScript zapis vrne vrednost false, se URL, določen z ACTION, ne vključi, če pa vrne karkšnokoli drugo vrednost, pa se.

OnSubmit lahko uporabimo, če hočemo npr. preveriti, ali je forma "pravilno" izpolnjena.

Primer (onSubmit)

Napišemo formo, ki vsebuje text objekt, kamor moramo vstaviti tri znake. OnSubmit oskrbnik se izvede, ko pritisnemo tipko submit. Pokliče funkcijo checkData, ki vrne vrednost true, če smo res vpisali tri znake, drugače vrne false. Pazi: funkcijo checkData pokliče onSubmit in ne sam pritisk na gumb submit.

<SCRIPT>
function checkData (){
if (document.myForm.threeChar.value.length == 3) {
   return true}
   else {
      alert("Enter exactly three characters. " + document.myForm.threeChar.value +
         " is not valid.")
      return false}
}
</SCRIPT>
<FORM NAME="myForm" onSubmit="return checkData()">
Enter 3 characters:
<INPUT TYPE="text" NAME="threeChar" SIZE=3>

<INPUT TYPE="submit" VALUE="Done" NAME="submit1" onClick="document.myForm.threeChar.value=document.myForm.threeChar.value.toUpperCase()"> </FORM>

Enter 3 characters:

Primer (submit)

Ta primer je podoben prejšnjemu. Razlika je v tem, da tukaj za pošiljanje podatkov v nadaljno obdelavo uporabimo metodo submit. Pritisk na gumb submit nam povzroči klic funkcije checkData. Če je vrednost true, funkcija checkData pošlje formo naprej v obdelavo s klicem submit metode.

function checkData (){
if (document.myForm.threeChar.value.length == 3) {
   document.myForm.submit()}
   else {
      alert("Enter exactly three characters. " + document.myForm.threeChar.value +
         " is not valid.")
      return false}
}

<FORM NAME="myForm" onSubmit="alert('Form is being submitted.')"> <B>Enter 3 characters:</B> <INPUT TYPE="text" NAME="threeChar" SIZE=3> <P><INPUT TYPE="button" VALUE="Done" NAME="button1" onClick="checkData()"> </FORM>

Enter 3 characters:

Podatki iz forme so poslani ustreznemu CGI programu kot vrsta name/value parov, pri čemer je name ime elementa, value pa je v večini primerov vrednost, prikazana na elementu, npr. tekst prikazan v text objektu.

Primer - reset

Z metodo reset postavimo vrednosti elementov nazaj na njihove začetne vrednosti.

Naslednji primer prikaže delovanje te metode. V tekstovno polje moramo vpisati "CA" ali "AZ". onChange pokliče funkcijo, ki povzroči uporabo reset metode le, če smo pravilno vstavili.

Po uporabi reset metode onReset povzroči izpis sporočila.

<SCRIPT>
function verifyInput(textObject) {
   if (textObject.value == 'CA' || textObject.value == 'AZ') {
      alert('Nice input')
   }
   else { document.myForm.reset() }
}
</SCRIPT>


<FORM NAME="myForm" onReset="alert('Please enter CA or AZ.')"> Enter CA or AZ: <INPUT TYPE="text" NAME="state" SIZE="2" onChange=verifyInput(this)>

</FORM>

Včasih hočemo pomagati pri odločitvi izbire, zato poudarimo en gumb:

Element z imenom "nameForm" iz forme "myForm" poudarimo s funkcijo

function setfocus() {
  document.nameForm.nameElement.focus();
}

Če želimo, da se element poudari, ko odpremo stran, uporabimo onLoad v znački <body>:

<body onLoad="setfocus()">

Da element ni več poudarjen dosežemo na podoben način z uporabo metode blur.

Objekt Checkbox

Checkbox ali kontrolno okno v HTML dokumentu lahko poistovetimo s stikalom, s katerim lahko uporabnik nastavi vrednost "on" (vklopljeno stikalo) ali "off" (izklopljeno stikalo).

Objekt checkbox je element objekta form, zato mora biti definiran v ukazu <FORM>. Za definicijo kontrolnega okna uporabimo standarden HTML ukaz, kateremu dodamo JavaScript oskrbnika dogodkov:

<INPUT    TYPE="checkbox"    NAME="checkboxName"    VALUE="checkboxValue"    [CHECKED]    [onBlur="handlerText"]    [onClick="handlerText"]    [onFocus="handlerText"]>    tekst

Primer

Če napišemo:

<B>Izberi zvrsti, ki so ti všeč:</B>
<BR><INPUT TYPE="checkbox" NAME="musicpref_rnb" CHECKED> R&B
<BR><INPUT TYPE="checkbox" NAME="musicpref_jazz" CHECKED> Jazz
<BR><INPUT TYPE="checkbox" NAME="musicpref_blues" CHECKED> Blues
<BR><INPUT TYPE="checkbox" NAME="musicpref_rave" > Rave

se nam na ekranu izpiše:

Izberi glasbo, ki ti je všeč:


R&B
Jazz
Blues
Rave

NAME="checkboxName" Ime objekta checkbox.

VALUE="checkboxValue" specificira vrednost, ki je vrnjena strežniku, ko je forma izpolnjena, če uporabnik izbere to okno. Če vrednosti ne predpišemo, je VALUE="on"

CHECKED Kontrolno okno s to oznako je na začetku označeno.

textToDisplay Besedilo poleg kontrolnega okna.

Lastnosti:

LastnostiOpis
checked"Boolean" lastnost, ki predstavlja trenutno stanje v kontrolnem oknu: true za vklopljeno stikalo (obkljukan okenček) in false za izklopljeno stikalo (prazen okenček). Dovoljuje nam, da lahko že v programu določimo vrednost kontrolnega okna.
defaultCheckedLastnost tipa Boolean, ki predstavlja pripis CHECKED, true, če je že v nastavitvah določeno, da je kontrolno okno vklopljeno in false v nasprotnem primeru
form propertyspecificira objekt Form, ki vsebuje objekt Checkbox
namePredstavlja pripis NAME
typePredstavlja pripis TYPE
valuevrednost "on" ali "off" odvisno od tega, ali je kontrolno okno vklopljeno ali ne

Primer

Metode:

- blur
- click
- focus

Blur in focus metodi uporabimo na isti način kot pri gumbu, preprost primer za click metodo, ki nam povzroči, da se v kontrolnem oknu pojavi kljukica, pa je tukaj.

Objekt Text

Je tekstovno vhodno polje objekta form v HTML. Uporabnik lahko preko njega vanša besede, številke, fraze, ...

Objekt Text je element objekta Form, zato mora biti definiran v ukazu <FORM>.

Definiramo ga s standardnim HTML stavkom, kateremu dodamo JavaScript oskrbnike dogodkov:

<INPUT    TYPE="text" MAXLENGTH="maxChars"    NAME="textName"    VALUE="textValue"    SIZE=integer    [onBlur="handlerText"]    [onChange="handlerText"]    [onFocus="handlerText"]>
NAME="textName" je ime objekta text.

VALUE="textValue" je začetno vrednost objekta text.

SIZE=integer število znakov, ki jih lahko vnesemo, ne da bi se nam pri tem prvi že skril.

MAXLENGTH="maxChars" je največje možno število znakov, ki jih še lahko vpišemo.

Primer:

Definirajmo tekstovno polje, v katero gre naenkrat le 10 znakov, vidimo pa jih le 5.

<FORM NAME=form1>
<INPUT TYPE="text" MAXLENGTH=10 NAME="okno" VALUE="primer" SIZE=5 onChange={defval()}>
</FORM>

Lastnosti:

LastnostOpis
defaultValuePredstavlja začetni pripis VALUE
form propertyspecificira objekt form, ki vsebuje objekt text
namePredstavlja pripis NAME
typePredstavlja pripis TYPE
valuePredstavlja trenutno vrednost objekta text

Metode:

- blur
- focus
Nazaj na SEMINAR II.
ali domaco stran.