JavaScript & Form - Benutzereingaben im Formular

Formulare dienen der Eingabe von Informationen durch den Benutzer. Dabei existieren eine Reihe von Eingabelementen, die jede für sich einen bestimmten Zweck erfüllen. Die Paralellen zu Eingabeelementen von traditionellen Anwendungen sind nicht zu übersehen. Ein Formular wird mit dem Form-Tag eingeleitet und umschließt alle darin enthaltenen Eingabeelemente.

Es gibt Felder zur Eingabe von Text – wobei es egal ist, ob in diesen Elementen die Eingabe von Zahlenwerten oder Texten erfolgt: Für das Eingabeelement spielt das keine Rolle. Mehrzeilige Auswahllisten und aufklappbare Combo-Boxen mit auswählbaren Werten, werden gleichermaßen durch Auswahllisten (in HTML mit dem Select-Tag definiert) repräsentiert. Dabei wird hier einfach das Size-Attribut des Select-Tags auf 1 gesetzt, was dazu führt, dass aus der List-Box eine Combo-Box wird.

Weiterhin sind Radio-Buttons, mit deren Hilfe ein Anwender genau eine aus mehreren zur Verfügung stehenden Alternativen auswählen kann, und auch Checkboxen in HTML mit entsprechenden HTML-Tags vertreten. Im Gegensatz zu Radio-Buttons bieten Checkboxen dem Benutzer die Möglichkeit mehrere Optionen aus einer Reihe von Wahlmöglichkeiten gleichtzeitig auszuwählen.

Auch Buttons, die zur Bestätigung der Eingabe oder zum Zurücksetzen der Eingabefelder dienen, haben ihren Platz in JavaScript-Formularen. Darüber hinaus können auch Buttons definiert werden, die andere Aktionen einleiten. Eine besondere Rolle in einem Formular spielen Felder zum Upload (Hochladen) von Dateien. Diese bestehen aus einem Eingabefeld und einem Button, der nach dessen Betätigung einen Dateiauswahldialog öffnet.

Die Prüfung der vom Benutzer eingegebenen Daten kann mit Hilfe von JavaScript erfolgen, wobei es zu Problemen führen kann, wenn die Eingabe ausschliesslich auf Client-Seite geprüft wird. Benutzereingaben sollten also stets auch auf Seite des Webservers geprüft werden. Eine Eingabeprüfung wird oft unter Einsatz von JavaScript Events eingeleitet. Wird beispielswiese das onClick-Event eines Eingabeelements – normalerweise wird hier ein Button verwendet – ausgelöst, so wird die Eingabe durch eine entsprechende JavaScript-Funktion geprüft. Aber auch das onSubmit-Event eines Formulars kann mit einem entsprechenden Event-Handler belegt werden. In diesen Fällen werden normalerweise alle im Formular vorhandenen Eingabefelder auf einmal geprüft.

Eine weitere Möglichkeit besteht darin, jedes einzelne Eingabeelement getrennt auf Gültigkeit der Eingabe zu prüfen. Die Eingabeprüfung wird dann automatisch eingeleitet, wenn das Eingabefeld den Fokus – durch Anklicken eines Elements ausserhalb des Eingabeelements oder durch Betätigung der TAB-Taste, wodurch der Fokus auf das nächste Element gesetzt wird – verliert. Hier kommt dann das JavaScript-Event onBlur zum Einsatz.

JavaScript Form Beispiel 1: Zugriff auf ein JavaScript Get Form

Der Zugriff auf die Elemente einer Form in JavaScript ist auf zwei unterschiedlichen Wegen umsetzbar. Die erste Möglichkeit betsteht darin, sich den Fähigkeiten des Forms-Objektes zu bedienen. Das Forms-Objekt ist ein direktes Kindobjekt des vordefinierten JavaScript-Objekts Document. Über dieses Document-Objekt, welches in der JavaScript-Objekthierarchie wiederum unter dem Window-Objekt angesiedelt ist, kann nun auf mehreren Wegen jedes einzelne im HTML-Dokument definierte Formular separat angesprochen werden.

Für das Ansteuern des Formulars stehen nun drei Varianten zur Verfügung, die sich nur wenig voneinander unterscheiden. Zwei dieser Methoden laufen über den Vektoroperator ([]). Hierbei wird der Zugriff auf ein Formular entweder über den Index – das erste Formular im HTML-Dokument hat die Indexposition 0 das zweite Formular 1... – oder, ähnlich wie bei einem assoziativen Array, über den Namen des Forulars realisiert. Die dritte Methode für den Zugriff auf ein bestimmtes Formular wird über den Zugriff auf die Eigenschaften des Forms-Objekts realisiert. Das Forms-Objekt speichert nämlich die darin enthaltenen Formulare unter deren Namen in seinen Objekteigenschaften.

Die zweite Möglichkeit zum Zugriff auf HTML-Formulare erfolgt ebenfalls mittels Document-Objekt. Anders als mit dem Forms-Objekt kann ein Formular auch direkt über seinen Namen angesprochen werden. Dies setzt voraus, dass die Eigenschaft name des Formulars (im HTML Form-Tag) mit einem entsprechenden Formularnamen belegt ist, über den das Formular addressiert wird. Angesprochen wird ein bestimmtes Formular, indem der Formularname an das Document-Objekt angehängt wird. Im Beispiel unten wird diese Vorgehensweise mit dem vierten Aufruf demonstriert.

Ausgehend vom Form-Objekt, welches wie oben beschrieben angesteuert wird, kann nun auf Eigenschaften und Methoden des ausgewählten Formulars zugegriffen werden. Im Beispiel unten wird die Form-Eigenschaft Method, welche im gleichnamigen Form-Attribut bei der Definition des Formulars angegeben wurde, ausgelesen und im HTML-Dokument unter Verwendung der Methode write() ausgegeben. Die im Formular enthaltenen Eingabeelemente – genauer gesagt der Name und Typ des jeweiligen Eingabeelements – werden im letzten Code-Abschnitt des Beispiels ausgegeben. Dabei wird in der For-Schleife über die unterschiedlichen Zugriffsweisen auf das Formular zugegriffen. Jedes Formular besitzt das Unterobjekt Elements, welches den Zugriff auf die im Formular enthaltenen Eingabeelemente ermöglicht.

<form name="formular1" method="get">
  Eingabefeld <input id="tname" name="Textfeld" type="text" /><br>
  <input type="reset" name="Reset-Button" value="Zur&uuml;cksetzen" />
  <input type="submit" name="Submit-Button" value="Daten abschicken" /><br><br>
  <script language="javascript" type="text/javascript">
  <!-- // JavaScript-Bereich für ältere Browser auskommentieren
  // Möglichkeiten zum Ansprechen eines HTML-Formulars über das
  // Forms-Objekt.
  // 1. Direkt mittels Formularname...
  document.write ('1. ' + document.forms.formular1.method + '<br>');
  // 2. über den Vektoroperator mit dem Formularnamen...
  document.write ('2. ' + document.forms['formular1'].method + '<br>');
  // 3. und über den Index unter dem das Formular im
  //    Forms-Objekt gespeichert ist..
  document.write ('3. ' + document.forms[0].method + '<br>');
  // Das Formular ist auch unter seinem Namen, der im FORM-Tag
  // in der Eigenschaft name gespeichert ist, ansprechbar.
  // Daraus folgt die vierte Zugriffsmöglichkeit mit folgendem
  // Konstrukt.
  document.write ('4. ' + document.formular1.method + '<br><br>');

  // Inhalt des oben definierten Formulars ausgeben.
  // Die Eigenschaftswerte name und type speichern den Namen und
  // den Typ des jeweiligen Eingabeelements.
  for (i = 0; i < document.formular1.elements.length; i++)
    document.write ('Eingabeelement ' + i +
        ' - Name: ' + document.forms['formular1'].elements[i].name +
        ', Typ: ' + document.forms[0].elements[i].type + '<br>');
  // -->
  </script>
</form>
Eingabefeld


Das gezeigte Beispiel funktioniert natürlich auch mit einem Post-Form. Im Prinzip ist es für den Zugriff auf Elemente eines Formulars mit JavaScript unerheblich, ob es sich um ein GET-Form oder POST-Form handelt. Die Übertragungsmethode, die im Form-Attribut method angegeben wird, legt nur die Methode fest, mit der die Formulardaten an den Server verschickt werden.

Letzte Posts aus unserem Forum

Script Schrift vergrößern

Hallo wollte gerade das Script für die Schriftvergrößerung testen, aber irgendwie bekomme ich das nicht hin. Habe eine Joomla Website und dort die ... » mehr

von Gast am Donnerstag, 22. April 2010 13:32 in JavaScript - bisher 1 Antwort
Letzter Beitrag: Donnerstag, 22. April 2010 18:05 von alm

Hallo, damit kann man nicht allzu viel anfangen. Soviel ich weiss kann es zuweilen Probleme mit Tabellen-Layouts geben. Dort werden die ... » mehr

Javascript Schriftengröße: Problem bei URL-Übergabe im IE8

Hallo, ich hab eben das Javascript zur Schriftengröße eingebaut, klappt auch wunderbar auf Firefox, aber der IE 8 hat folgendes Problem: - wenn ich ... » mehr

von horst1234 am Dienstag, 23. Februar 2010 13:06 in JavaScript - bisher 1 Antwort
Letzter Beitrag: Dienstag, 23. Februar 2010 14:07 von horst1234

Ich hab das charset im Header geändert (wie in der beispiel.html), und schon klappt es ... » mehr

Dynamisches einfügen von Zeilen in eine Spalte

Hallo, ich möchte gerne eine Zeile zwischen zwei andere Zeilen einfügen. Leider klappt folgender Versuch noch nicht so richtig. Vielleicht kann mir ... » mehr

von Bluecaspar am Mittwoch, 10. Februar 2010 18:09 in JavaScript - bisher 2 Antworten
Letzter Beitrag: Donnerstag, 11. Februar 2010 10:37 von Bluecaspar

Ja genau, das war der Fehler. Vielen Dank Alex. Hier der korrigierte Code: <html> <head> <title> Test ... » mehr

Fenster in Frame erzeugen

Hallo, ich würde gerne ein Fenster in einer Webseite erzeugen. Das Fenster sollte dabei auf ein Frame begrenzt sein, sich also nicht aus diesen ... » mehr

von Bluecaspar am Dienstag, 9. Februar 2010 13:57 in JavaScript - bisher 2 Antworten
Letzter Beitrag: Mittwoch, 10. Februar 2010 09:32 von Bluecaspar

Ja hervorragend, dass ist genau das was ich möchte. Danke ... » mehr

Problem: Kombination mit Lightbox 2

Hallo, ich bin gerade dabei die Galerie mit der Lightbox 2 zu verknüpfen, da ich die Bilder im Vollformat gerne in diesem schicken aufpoppenden ... » mehr

von GoPeter am Montag, 16. November 2009 23:38 in JavaScript - bisher 16 Antworten
Letzter Beitrag: Mittwoch, 18. November 2009 00:32 von GoPeter

Soo...hat lange gedauert...aber jetzt ist es endlich ... » mehr



¬ Insolvenzrecht