Adaptive Forms-Blockfeldeigenschaften

In diesem Dokument wird zusammengefasst, wie das JSON-Schema gerenderten HTML in blocks/form/form.js zugeordnet ist, wobei der Schwerpunkt auf der Art und Weise liegt, wie Felder identifiziert und gerendert werden, auf allgemeinen Mustern und feldspezifischen Unterschieden.

Wie werden Felder (fieldType) identifiziert?

Jedes Feld im JSON-Schema verfügt über eine fieldType-Eigenschaft, die bestimmt, wie es gerendert wird. fieldType kann sein:

  • Ein spezieller Typ
    Beispiele: drop-down, radio-group, checkbox-group, panel, plain-text, image, heading usw.
  • Ein gültiger HTML-Eingabetyp
    Beispiele: text, number, email, date, password, tel, range, file usw.
  • Ein Typ mit einem -input Suffix
    Beispiele: text-input, number-input usw. (normalisiert auf den Basistyp wie text, number).

Wenn der fieldType einem bestimmten Typ entspricht, wird benutzerdefinierter Renderer verwendet. Andernfalls wird er als Standardeingabetyp“.

In den folgenden Abschnitten finden Sie vollständige HTML-Struktur und ​ für jeden Feldtyp.

Von Feldern verwendete allgemeine Eigenschaften

Im Folgenden finden Sie die von den meisten Feldern verwendeten Eigenschaften:

  • id: Gibt die Element-ID an und unterstützt Barrierefreiheit.
  • name: Definiert das name für Eingabe-, Auswahl- oder Feldsatzelemente.
  • label.value, label.richText, label.visible: Gibt den Titel-/Legendentext, den HTML-Inhalt und die Sichtbarkeit an.
  • value: Stellt den aktuellen Wert des Felds dar.
  • required: Fügt das required oder Validierungsdaten hinzu.
  • readOnly, enabled: Steuert, ob das Feld bearbeitbar oder deaktiviert ist.
  • description: Zeigt Hilfetext unter dem Feld an.
  • tooltip: Legt das title für Eingaben fest.
  • constraintMessages: Bietet benutzerdefinierte Fehlermeldungen als Datenattribute.

Allgemeine HTML-Struktur

Die meisten Felder werden in einem Wrapper gerendert, der eine Beschriftung und optionalen Hilfetext enthält. Das folgende Snippet veranschaulicht die Struktur:

<div class="<fieldType>-wrapper field-wrapper field-<name>" data-id="<id>">
<label for="<id>" class="field-label">Label</label>
<!-- Field-specific input/element here -->
<div class="field-description" id="<id>-description">Description or error
message</div>
</div>

Für Gruppen (Optionsfelder/Kontrollkästchen) und Bereiche wird anstelle eines <fieldset> ein <legend> mit einem <div>/<label> verwendet. Der Hilfetext

ist nur vorhanden, wenn die Beschreibung festgelegt ist.

Fehlermeldungsanzeige

Fehlermeldungen werden in demselben .field-description angezeigt, das für den Hilfetext verwendet wird und dynamisch aktualisiert wird.

Wenn ein Feld ungültig ist:

Wenn das Feld gültig wird:

Benutzerdefinierte Fehlermeldungen können mithilfe der constraintMessages-Eigenschaft in der JSON definiert werden.
Diese werden dem Wrapper als data-<constraint>ErrorMessage-Attribute hinzugefügt (z. B. data-requiredErrorMessage).

Standardeingabetypen (HTML-Eingabe oder *-input)

Wenn fieldType kein spezieller Typ ist, wird er als standardmäßiger HTML-Eingabetyp oder als <type>-input behandelt, z. B. text, number, email, date, text-input, number-input.

Einschränkungen für Standardeingabetypen

Abhängig von JSON-Eigenschaften werden Begrenzungen als Attribute zum Eingabeelement hinzugefügt.

JSON-Eigenschaft
HTML-Attribut
Gilt für
maxLength
maxLength
Text, E-Mail, Passwort, Tel
minLength
minlength
Text, E-Mail, Passwort, Tel
pattern
pattern
Text, E-Mail, Passwort, Tel
maximum
max.
Zahl, Bereich, Datum
minimum
Min.
Zahl, Bereich, Datum
Schritt
Schritt
Zahl, Bereich, Datum
Akzeptieren der Bedingungen
Akzeptieren der Bedingungen
Datei
Mehrfach
Mehrfach
Datei
maxOccur
data-max
Bedienfeld
minOccur
data-min
Bedienfeld
NOTE
multiple ist eine boolesche Eigenschaft. Wenn „true“, wird das multiple hinzugefügt.

Diese Attribute werden automatisch vom Formular-Renderer auf der Grundlage der JSON-Definition des Felds festgelegt.

Beispiel: HTML-Struktur mit Einschränkungen

Das folgende Beispiel zeigt, wie ein Zahlenfeld mit Validierungsbeschränkungen und Attributen zur Fehlerbehandlung gerendert wird.

<div class="number-wrapper field-wrapper field-age" data-id="age"
data-required="true"
data-minimumErrorMessage="Too small" data-maximumErrorMessage="Too large">
<label for="age" class="field-label">Age</label>
<input type="number"
id="age" name="age"
value="30" required min="18"
max="99" step="1"
placeholder="Enter your age" />
<div class="field-description" id="age-description"> Description or error message
</div>
</div>

Jeder Teil der HTML-Struktur spielt eine Rolle bei der Datenbindung, Validierung und Anzeige von Hilfe- oder Fehlermeldungen.

Feldspezifische Eigenschaften und ihre HTML-Strukturen

Zusätzliche Eigenschaften:

Zum Beispiel:

<div class="drop-down-wrapper field-wrapper field-<name>" data-id="<id>"
data-required="true"
data-requiredErrorMessage="This field is required">
<label for="<id>" class="field-label">Label</label>
<select id="<id>" name="<name>" required title="Tooltip" multiple>
<option disabled selected value="">Placeholder</option>
<option value="opt1">Option 1</option>
<option value="opt2">Option 2</option>
</select>
<div class="field-description" id="<id>-description"> Description or error message
</div>
</div>

Nur Text

Zusätzliche Eigenschaften:

Zum Beispiel:

<div class="plain-text-wrapper field-wrapper field-<name>" data-id="<id>">
<label for="<id>" class="field-label">Label</label>
<p>Text or <a href="..." target="_blank">link</a></p>
</div>

Kontrollkästchen

Zusätzliche Eigenschaften:

Zum Beispiel:

<div class="checkbox-wrapper field-wrapper field-<name>" data-id="<id>"
data-required="true"
data-requiredErrorMessage="Please check this box">
<label for="<id>" class="field-label">Label</label>
<input type="checkbox"
id="<id>"
name="<name>" value="on"
required
data-unchecked-value="off" />
<div class="field-description" id="<id>-description"> Description or error message
</div>
</div>

Schaltfläche

Zusätzliche Eigenschaften:

Zum Beispiel:

<div class="button-wrapper field-wrapper field-<name>" data-id="<id>">
<button id="<id>" name="<name>" type="submit" class="button"> Label
</button>
</div>

mehrzeiliger Eingang

Zusätzliche Eigenschaften:

Zum Beispiel:

<div class="multiline-wrapper field-wrapper field-<name>" data-id="<id>"
data-minLengthErrorMessage="Too short" data-maxLengthErrorMessage="Too long">
<label for="<id>" class="field-label">Label</label>
<textarea id="<id>"
name="<name>" required
minlength="2"
maxlength="100"
pattern="[A-Za-z]+"
placeholder="Type here..."></textarea>
<div class="field-description" id="<id>-description"> Description or error message
</div>
</div>

Panel

Zusätzliche Eigenschaften:

Zum Beispiel:

<fieldset class="panel-wrapper field-wrapper field-<name>" data-id="<id>"
name="<name>"
data-repeatable="true" data-index="0">
<legend class="field-label">Label</legend>
<!-- Nested fields here -->
<button type="button" class="add">Add</button>
<button type="button" class="remove">Remove</button>
<div class="field-description" id="<id>-description"> Description or error message
</div>
</fieldset>

Optionsfeld

Zusätzliche Eigenschaften:

Zum Beispiel:

<div class="radio-wrapper field-wrapper field-<name>" data-id="<id>"
data-required="true">
<label for="<id>" class="field-label">Label</label>
<input type="radio" id="<id>" name="<name>" value="opt1" required />
<div class="field-description" id="<id>-description"> Description or error message
</div>
</div>

Optionsfeldgruppe

Zusätzliche Eigenschaften:

Zum Beispiel:

<fieldset class="radio-group-wrapper field-wrapper field-<name>" data-id="<id>"
data-required="true">
<legend class="field-label">Label</legend>
<div>
<input type="radio" id="<id>-0" name="<name>" value="opt1" required />
<label for="<id>-0">Option 1</label>
</div>
<div>
<input type="radio" id="<id>-1" name="<name>" value="opt2" />
<label for="<id>-1">Option 2</label>
</div>
<div class="field-description" id="<id>-description"> Description or error message
</div>
</fieldset>

Kontrollkästchen-Gruppe

Zusätzliche Eigenschaften:

Zum Beispiel:

<fieldset class="checkbox-group-wrapper field-wrapper field-<name>" data-id="<id>"
data-required="true" data-minItems="1"
data-maxItems="3">
<legend class="field-label">Label</legend>
<div>
<input type="checkbox" id="<id>-0" name="<name>" value="opt1" required />
<label for="<id>-0">Option 1</label>
</div>
<div>
<input type="checkbox" id="<id>-1" name="<name>" value="opt2" />
<label for="<id>-1">Option 2</label>
</div>
<div class="field-description" id="<id>-description"> Description or error message
</div>
</fieldset>

Bild

Zusätzliche Eigenschaften:

Zum Beispiel:

<div class="image-wrapper field-wrapper field-<name>" data-id="<id>">
<picture>
<img src="..." alt="..." />
<!-- Optimized sources -->
</picture>
</div>

Überschrift

Zusätzliche Eigenschaften:

Zum Beispiel:

<div class="heading-wrapper field-wrapper field-<name>" data-id="<id>">
<h2 id="<id>">Heading Text</h2>
</div>

Weitere Informationen finden Sie in der Implementierung in blocks/form/form.js und blocks/form/util.js.

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab