form.js ist eine Klasse zur einfachen Generierung von HTML-Formularen und basiert auf app.js
Ein Formular wird typischerweise nach folgendem Vorgehen verwendet:
setValues(…) werden die einzelnen Felder mit Daten versehen.getValues() ausgelesen werden und stehen als Array zur Verfügung, das z.B. direkt via Ajax-Call in die Datenbank gespeichert werden kann.Das Formular stellt folgende weiteren Optionen zur Verfügung:
Die wichtigsten Methoden:
initForm ist der Konstruktor. container ist die eine HTML-ID oder die direkte Referenz auf ein DOM-Objekt, in das das Formular eingefügt werden soll. Im Gegensatz zu anderen von app abgeleiteten Objekten wird der Inhalt des Containers nicht komplett ersetzt: Darin kann sich bereits das komplette Layout des Formulars als Template befinden.
Die Argumente templateFile und templateString sind optional: Eines von beiden wird benötigt, falls der übergebene Container keine Template-Informationen für die Darstellung des Formulars enthält.
Um Formularfelder zu erzeugen, wird für jedes Feld einmal eine addXY(key, …)-Funktion aufgerufen. Das Formular instanziert das gewünschte Input-Objekt und platziert es im Template-Element mit der ID key. Als Input-Objekt kann eine beliebige Klasse verwendet werden, die von input abgeleitet ist.
Die Methode addInput(key) zum Beispiel fügt ein normales Input-Feld mit type='text' hinzu.
Sämtliche eingefügten Felder sind vorerst leer und werden später z.B. mit setValues(…) gefüllt.
Das Formular unterstützt auch mehrdimensionale Datenstrukturen. In so einem Fall lautet der Key zum Beispiel allgemein[adresse][strasse], also gleich wie er auch in einem normalen HTML-Formular dargestellt würde.
Folgende Methoden sind zur Zeit implementiert:
type='hidden' hinzu.type='text' hinzu.type='password' hinzu.options ist eine Hashtable aller möglichen Werte, nullValuePosition definiert den Wert, der als NULL betrachtet wird.type='radio' hinzu.type='checkbox' hinzu.(Eine Beschreibung der einzelnen Input-Klassen finden Sie ebenfalls unter der Dokumentation zur Klasse input)
Setzt sämtliche Felder zurück. (Also z.B. ““ bei Text-Inputs oder den Default-Wert bei Select-Boxen.)
Setzt die Werte aller Formularfelder, für die in der Hashtable values ein Element existiert. Das Argument section ist optional. Es kann bei mehrdimensionalen Datenstrukturen angegeben werden, um nur auf bestimmte Teile des Formulars zuzugreifen.
Gibt die Werte aller Formularfelder als Hashtable zurück. Das Argument section ist optional. Es kann bei mehrdimensionalen Datenstrukturen angegeben werden, um nur auf bestimmte Teile des Formulars zuzugreifen.
Gibt das JS-Objekt mit der ID key zurück. Wird verwendet, um direkt von aussen her auf ein bestimmtes Feld zuzugreifen.
Gibt den Wert des gewünschten Feldes zurück. Ist eigentlich ein Wrapper für formular.getInput(key).getValue().
Setzt den Wert des gewünschten Feldes. Ist eigentlich ein Wrapper für formular.getInput(key).setValue(value).