5. Dynamische WebSeiten mit Formularen und Scripts



5.1 Was sind Formulare und Scripts?

Formulare sind spezielle Absätze, die Eingabefelder und Knöpfe enthalten können. Der Leser der HTML-Seite kann hier Eingaben machen, die z.B. nach einem Knopfdruck verarbeitet werden.

Beispiel:

  

Dieses einfache Formular enthält nur ein Texteingabefeld und einen "Löschen"-Knopf. Wenn Sie in das Feld irgendetwas eintippen und den Knopf anklicken, wird Ihre Eingabe wieder gelöscht.

Sinnvollerweise sollten Eingaben nicht nur wieder gelöscht werden können, sondern auf Knopfdruck irgendwo weiter verarbeitet werden.
Deshalb haben viele Formulare einen "Abschicken"-Knopf (Submit). Auf dem Web-Server muß dann aber ein Programm existierten, das die Daten erhält, dort verarbeitet und die Ergebnisse wieder zurückschickt. In welcher Sprache solch ein Programm geschrieben ist, spielt keine Rolle. Es muß sich beim Datenaustausch nur an einen bestimmten Standard halten (z.B.: CGI = Common Gateway Inferface).

Darauf möchte ich an dieser Stelle aber nicht weiter eingehen, sondern die lokale Verarbeitung von Formularen mit Scripts beschreiben.
Der Programmcode muß in diesem Fall im Dokument selbst enthalten sein. Man nennt solch ein Programm ein Script. Scriptsprachen sind z.B. JAVASCRIPT und VBSCRIPT (Visual Basic).

Zunächst folgt eine Zusammenstellung der möglichen Formularfelder und ihrer Eigenschaften.


5.2 Formularfelder

Dynamische Webseiten kommunizieren mit dem Leser über Formularfelder. Die verschiedenen Feldtypen finden Sie im Menüpunkt Einfügen / Formularfeld oder entsprechend als Knopf in der Symbolleiste.

Beim Einfügen des ersten Formularfeldes wird automatisch das Formular erzeugt (gestrichelte Umrandung). Danach können beliebig viele weitere Felder plaziert werden. Fügt man ein Formularfeld außerhalb der gestrichelten Umrandung ein, wird ein zweites (vom ersten unabhängiges) Formular erzeugt.

Die Eigenschaften eines Formulars und jedes Feldes können nachträglich geändert werden. Dazu klickt man das Objekt mit der rechten Maustaste an und wählt Formulareigenschaften bzw. Formularfeldeigenschaften.

  • Einstellungen für das Formular selbst:

    Geben Sie Ihrem Formular einen Namen (Hier: MeinFormular)

  • Einzeiliges Textfeld:

    Das Textfeld braucht einen Namen, unter dem es z.B. vom Script angesprochen werden kann.
    Ein Anfangswert muß nicht unbedingt angegeben werden.
    Kennwortfeld (Ja) bewirkt, daß Sternchen statt des Textfeldinhaltes angezeigt werden.

  • Bildlauffeld:

    Es gilt dasselbe wie für das einzeilige Textfeld.
    Wieviele Zeilen angezeigt werden, wird durch Anzahl der Zeilen festgelegt. Durch Scrolling sind aber beliebig viele Zeilen möglich.

  • Kontrollkästchen: Rot Grün Blau
    Es wird hier nur das Eigenschaftsfenster für das 2. Kontrollkästchen abgebildet:

    Kontrollkästchen können einzeln vorkommen oder - wie oben - zu Gruppen zusammengefaßt sein. Alle 3 Kästchen im Bsp. haben deshalb denselben Namen Farbkontrolle. Sie unterscheiden sich aber in ihrem Wert. Die Kästchen für die Werte rot und grün sind zu Beginn immer angekreuzt.

  • Optionsfelder: kath. evang. sonst.
    Es wird hier nur das Eigenschaftfenster für das 1. Optionsfeld angezeigt:

    Es gilt dasselbe wie für Kontrollkästchen mit dem Unterschied, daß in einer Gruppe immer nur eine Option ausgewählt sein kann.

  • Dropdown-Menü:

    Das Dropdown-Menü braucht wieder einen Namen.
    Über die Knöpfe können Sie eine neue Auswahl hinzufügen oder bestehende ändern ...

  • Schaltfläche:

    Name und Beschriftung müssen angegeben werden.
    Dann wählt man den Schaltflächentyp:

    • Standard ist ein gewöhnlicher Knopf. Man kann z.B. vereinbaren, daß nach Drücken dieses Knopfes ein Befehl oder ein Script ausgeführt wird.
      Dies wird unter Erweitert / Hinzufügen eingetragen:

      Unter Name wird das Ereignis (onClick) eingetragen, auf das das Objekt (hier: der Knopf) reagieren soll (Ein Textfeld kann z.B. auf onChange reagieren).
      Unter Wert muß der zugehörige Befehl oder die Script-Function stehen.
      (Hier wird mit dem Befehl alert ein Hinweis-Fenster mit einem Ok-Knopf erzeugt).

    • Abschicken erzeugt einen Submit-Knopf (siehe oben).

    • Zurücksetzen erzeugt den oben beschriebenen Löschknopf.

 


5.3 Zusammenspiel von Formular und Script

Formular und Script werden im gleichen HTML-Dokument gespeichert (Das macht aber FP-Express automatisch).

Das zu einem Formular gehörige Script kann an jeder beliebigen Stelle im Dokument eingefügt werden.
Wählen Sie dazu Einfügen / Script. Im Fenster, das dann erscheint, wählen Sie die Scriptsprache per Mausklick (Java oder VB oder andere). Im Editorbereich dieses Fensters wird das Scriptprogramm geschrieben und mit OK abgeschlossen.
An der Stelle im Dokument, an der das Script eingefügt wurde, erscheint ein Scriptsymbol: oder . Sie können das Script jederzeit verändern, wenn Sie dieses Symbol mit der rechten Maustaste anklicken und Scripteigenschaften.. wählen.

Zugriff des Scriptprogramms auf das Formular

Damit das Script mit den Formularfeldern kommunizieren kann (z.B. Textfelder lesen / schreiben), müssen diese eindeutige Namen haben. Der Zugriff erfolgt in einer objektorientierten Hierarchie.
Das oberste Objekt ist das Browserfenster und hat (falls man keinen anderen vergeben hat) den Namen window oder self.
Im Fenster ist das Dokument enthalten. Es hat den Standardnamen: document.
Darin enthalten ist das Formular, dem Sie selbst einen Namen gegeben haben (siehe oben), z.B.: MeinFormular.
Darin sind wiederum die Felder als Teilobjekte enthalten, z.B. das Textfeld mit dem Namen: Geburtsort.

Die Teilnamen in der Objekthierarchie werden durch Punkt getrennt, so daß der vollständige Name des obigen Textfeldes wäre: window.document.MeinFormular.Geburtsort.
Wenn das aktuelle Fenster gemeint ist, kann die Angabe von window auch weggelassen werden (Zielfenster ist z.B. bei Verwendung von Frames wichtig).
Achtung: Bei Scriptbefehlen ist oft die Groß- und Kleinschreibung entscheidend.

Objekte haben Eigenschaften. Das Textfeldobjekt hat z.B. die Eigenschaft value. Das ist der Inhalt des Textfeldes. Man kann auf eine Eigenschaft zugreifen, indem man sie an den Objektnamen anhängt, z.B.:
document.MeinFormular.Geburtsort.value.
Der Inhalt des Textfeldes Geburtsort wird in einem Script also folgendermaßen belegt, bzw. in eine Variable Ort gelesen:
document.MeinFormular.Geburtsort.value = "Stuttgart".
Ort = document.MeinFormular.Geburtsort.value.

Zugriff der Formularobjekte auf das Script

Das Scriptprogramm soll ausgeführt werden, wenn der Formularbenutzer einen Knopf anklickt oder ein Textfeld verändert oder die Maus auf ein Feld bewegt oder ....
D.h. die Ausführung ist "ereignisgesteuert". Man muß dem Formularobjekt nur "sagen", auf welches Ereignis es mit welcher Scriptprogrammausführung reagieren soll.
Mögliche Ereignisse sind z.B.:

Ereignis z.B. möglich für.. tritt ein, wenn ..
onClick Schaltfläche, Kontrollkästchen, Optionsfeld das Objekt "angeklickt" wird
onChange Textfeld, Bildlauffeld, Dropdown-Menü der Inhalt geändert wird
onFocus Textfeld, Bildlauffeld, Dropdown-Menü das Feld aktiviert wird
onBlur Textfeld, Bildlauffeld, Dropdown-Menü das Feld deaktiviert wird

Das kann für jedes Formularobjekt im Eigenschaftsfenster unter Erweitert eingetragen werden. Für das Objekt "Schaltfläche" ist das oben beschrieben. In diesem Beispiel wird auf das Ereignis onClick nicht mit einer Scriptausführung reagiert, sondern ein Bestätigungsfenster im Browser geöffnet. Genauso könnte aber auch ein einzelner Script-Befehl oder der Name einer Script-Funktion im Feld Wert eingetragen werden.

Das folgende Beispiel benötigt kein extra Script, da der (Java-) Scriptbefehl nur aus einer Zeile besteht.
Im Formular TermForm ist nur ein Textfeld mit dem Namen Termfeld enthalten.

Dieses reagiert auf das Ereignis onChange mit der Ausführung des Befehls:
document.TermForm.Termfeld.value = eval(document.TermForm.Termfeld.value).
Die Funktion eval berechnet einen Zahlenterm.

Wenn Sie also in das folgende Textfeld einen solchen Term - z.B. 3.5*(2.3-8.99) - eingeben und dann das Feld verlassen (Mausklick außerhalb), wird er berechnet und das Ergebnis in das Feld zurückgeschrieben.

Die Script-Programmierung ist zu vielfältig und umfangreich, um sie hier vollständig beschreiben zu können, deshalb folgen in Kap. 5.4 und 5.5 nur noch 2 Beispiele.

Zwei Bücher über Javascript bzw. VB-Script sind z.B.:

  • Javascript, Stefan Mintert, Grundlagen und Einführung, ADDISON-WESLEY, ISBN 3-8273-1087-3
  • Javascript & VBScript, Peter Aitken, THOMSON Publishing, ISBN 3-8266-0321-4

Eine Fülle von Beispielen finden Sie auch im WWW, wenn Sie die einschlägigen Suchmaschinen befragen. Eine Adresse ist z.B.: http://www.geocities.com/SiliconValley/7116

Eine ausführliche Anleitung zu HTML und Java-Script befindet sich unter der Adresse: http://www.netzwelt.com/selfhtml/ .


5.4 Ein Beispiel mit Javascript

Kommazahlen müssen mit Dezimal-Punkt eingegeben werden.


Das Formular heißt Rechnerform. Die Formularfelder heißen (von rechts nach links):
Summand1, Operator, Summand2, Addierknopf, Ergebnis.

Das folgende Script (aus dem Scripteigenschaftfensters) enthält die Funktion Addiere, die an das Ereignis onClick des "=" - Knopfes angehängt wurde.
Da ein Textfeld immer nur Text enthält (auch wenn es sich um Ziffern handelt), muß sein Inhalt mit der Funktion parseFloat in eine Kommazahl umgewandelt werden.

Obiges Script kommunziert direkt mit dem Formular Rechnerform (document hätte auch weggelassen werden können, da das Formular in diesem Fall im aktuellen Dokument gesucht und gefunden wird).

Sie können aber auch wiederverwendebare Scripts schreiben, die völlig unabhängig vom aktuellen Dokument und Formular sind.
Die Funktion Addiere erhält dann 3 Übergabevariablen (a,b,op) und eine Zeile mit dem Rückgabewert (return c):

function Addiere(a,b,Op)
{
var c
if (Op==0) c = a + b
if (Op==1) c = a - b
if (Op==2) c = a * b
if (Op==3) c = a / b
return c
}

An das Ereignis onClick des "=" - Knopfes wird dann der Aufruf der Funktion als Wertzuweisung an das Ergebnis-Feld "gehängt". Dabei müssen der Funktion die Werte der beiden Eingabefelder und der Wert des ausgewählten Operatorfeldes übergeben werden. Das sieht dann (etwas länglicher) so aus:

Ergebnis.value = Addiere(parseFloat(Summand1.value), parseFloat(Summand2.value), Operator.selectedIndex)

Die Angabe des Formularnamens konnte jeweils weggelassen werden, da obiges sowieso im Formularbereich gespeichert ist.


5.5 Ein Beispiel mit VBScript

Läuft nicht mit Netscape Comunicator!

Dieses Beispiel zeigt, daß auch verschiedene Formulare und Scripts in einem Dokument enthalten sein können.

Kommazahlen müssen mit Dezimal-Komma eingegeben werden.

+ - * /

Das Formular heißt jetzt Rechnerform2. Die Formularfelder heißen (von rechts nach links):
Opbutton (4 mal), Summand1, OperatorFeld, Summand2, Addierknopf, Ergebnis.
Es gibt keine Namenskonflikte mit den Formularelementen aus dem vorigen Kapitel, da sie sich in einem anderen Formular befinden.

An das Ereignis onClick des "+"-Opbuttons ist der Einzel-Befehl
document.Rechnerform2.OperatorFeld.value = "plus"
angehängt. Entsprechend für die anderen Opbuttons.

Das folgende Script enthält die Funktion Addiere2, die an das Ereignis onClick des "=" - Knopfes angehängt wurde. Die Funktion Csng entspricht der vorigen Funktion parseFloat.
In der 3. Zeile wurde für den vollständigen Formularnamen document.Rechnerform2 ein "Alias" form definiert (set).


 

Copyright (c) 2001 by Webdesign.ch
.


SwissBanner Link Exchange