---
title: flexi-input
---

Das Eingabefeld nimmt freie Text- oder Zahlenwerte entgegen. Je nach Konfiguration verhält es sich wie ein klassisches Textfeld, ein Zahlenfeld mit Einheit und Nachkommastellen oder als gesperrtes Anzeigefeld, das seinen Wert aus einer anderen Stelle des Dokuments übernimmt.

## Einstellungen

| Einstellung | Beschreibung |
|---|---|
| Bezeichnung | Der angezeigte Text über dem Feld |
| Name | Eindeutiger Bezeichner des Feldes (wird automatisch aus der Bezeichnung abgeleitet) |
| Eingabe deaktivieren | Sperrt das Eingabefeld, sodass es nicht bearbeitet werden kann |
| Abhängige Sperre | Sperre wird nur unter einer bestimmten Bedingung wirksam (siehe *Eingabe deaktivieren*) |
| Typ | **Text** für Freitext, **Zahl** für numerische Werte |
| Einheit | (Nur Typ Zahl) Optionale Einheit, die rechts neben dem Wert angezeigt wird (z. B. `kg`, `°C`, `mm`) |
| Auswahl der Einheit erlauben | (Nur Typ Zahl, mit Einheit) Erlaubt dem Anwender, die Einheit aus einer Liste zu wählen |
| Optionen | (Nur bei Auswahl der Einheit) Liste der verfügbaren Einheiten |
| Nachkommastellen aktiv | (Nur Typ Zahl) Begrenzt die Eingabe auf eine feste Anzahl Dezimalstellen |
| Nachkommastellen | (Nur Typ Zahl) Anzahl der zulässigen Dezimalstellen |
| Pflichtfeld | Wenn aktiv, muss das Feld ausgefüllt werden |
| Min | (Pflichtfeld) Mindestwert (Zahl) bzw. Mindestlänge (Text) |
| Max | (Pflichtfeld) Höchstwert (Zahl) bzw. Höchstlänge (Text) |
| Fehlertext | (Pflichtfeld) Meldung, die bei nicht erfüllter Pflicht angezeigt wird |

### Erweiterte Einstellungen

| Einstellung | Beschreibung |
|---|---|
| Standardwert | Vorbelegung des Feldes beim Öffnen eines neuen Dokuments |
| Platzhalter | Hinweistext, der im leeren Feld angezeigt wird |
| Prüfungsregeln | Regeln zur Bewertung des eingetragenen Werts (siehe Abschnitt *Validierungsregeln*) |
| Lookup-Pfad | Pfad zu einem anderen Feld, dessen Wert automatisch übernommen wird |
| Lookup-Wert | (Bei Lookup auf eine Liste) Name des Eintrags, dessen Wert übernommen wird |
| Typeahead-Quelle | (Nur Typ Text) Datenliste, aus der Vorschläge während der Eingabe angeboten werden |
| Typeahead-Schlüsselwort | (Nur Typ Text) Spalte der Datenliste, aus der die Vorschläge stammen |

## Eingabetypen

### Text

Nimmt beliebigen Text entgegen. Mit aktiviertem Pflichtfeld kann zusätzlich eine **Mindest-** und **Höchstlänge** verlangt werden.

Für Textfelder steht zusätzlich der **Typeahead** zur Verfügung: Während der Eingabe werden passende Einträge aus einer Datenliste vorgeschlagen. Neben dem Feld erscheint dann ein Statussymbol:

- **Grünes Server-Symbol** – der eingetragene Wert stammt aus der Datenliste
- **Gelbes Hand-Symbol** – der Wert wurde manuell eingegeben (kein Treffer in der Datenliste)

### Zahl

Nimmt nur Zahlen entgegen. Zusätzliche Optionen:

- **Einheit**: Wird die Einheit aktiviert, erscheint sie rechts neben dem Eingabefeld. Sie hat keinen Einfluss auf den Wert selbst.
- **Auswahl der Einheit erlauben**: Statt einer fest hinterlegten Einheit kann der Anwender die Einheit aus der unter *Optionen* gepflegten Liste wählen.
- **Nachkommastellen**: Bei `0` sind nur ganze Zahlen erlaubt; bei höheren Werten wird die Eingabe auf die angegebene Anzahl Dezimalstellen begrenzt.

Mit aktiviertem Pflichtfeld kann zusätzlich ein **Mindest-** und **Höchstwert** verlangt werden.

## Eingabe deaktivieren

Mit dieser Einstellung lässt sich das Feld sperren. Drei Varianten sind möglich:

**Dauerhaft gesperrt** – Ist nur *Eingabe deaktivieren* aktiv, kann das Feld nicht bearbeitet werden. Geeignet für Anzeigefelder, deren Wert über *Standardwert* oder *Lookup* gesetzt wird.

**Abhängig von einem anderen Feld** – Ist zusätzlich die *abhängige Sperre* aktiv, lässt sich festlegen, unter welcher Bedingung das Feld gesperrt sein soll:

| Einstellung | Beschreibung |
|---|---|
| Abhängiges Feld | Name des Feldes, das geprüft wird. Für ein Feld im selben Abschnitt genügt der Name (`auswahl`); für ein Feld in einem anderen Abschnitt: `abschnitt.feld` |
| Vergleichswert | (Optional) Bestimmter Wert, den das abhängige Feld haben soll |
| Sperren wenn | Bedingung für die Sperre. Ohne Vergleichswert: **Feld leer** oder **Feld gesetzt**. Mit Vergleichswert: **Wert stimmt überein** oder **Wert stimmt nicht überein** |

Ändert sich das abhängige Feld, wird die Sperre sofort neu ausgewertet.

## Lookup

Mit einem Lookup übernimmt das Feld seinen Wert automatisch aus einer anderen Stelle des Dokuments. Das Feld wird dabei gesperrt - der Anwender kann den Wert nicht ändern.

| Einstellung | Beschreibung |
|---|---|
| Lookup-Pfad | Pfad zum Quellfeld im Format `abschnitt.feld` oder `kapitel.abschnitt.feld` |
| Lookup-Wert | (Optional) Wenn der Lookup-Pfad auf eine Liste oder Tabelle zeigt, wird hier der Spalten- bzw. Eintragsname angegeben, dessen Wert übernommen werden soll |

## Standardwert

Der Standardwert wird beim Anlegen eines neuen Dokuments in das Feld geschrieben.

Beginnt der Standardwert mit `$`, wird er als Verweis auf ein Feld in einem anderen Kapitel ausgewertet - der dortige Wert wird beim Anlegen übernommen. Beispiel: `$kapitel1.kopf.auftragsnummer`.

## Validierungsregeln

Über die erweiterten Einstellungen können Prüfungsregeln definiert werden. Wenn Regeln konfiguriert sind, zeigt das Feld ein Statussymbol:

- **Grüner Haken** – alle Regeln sind erfüllt
- **Rotes Kreuz** – mindestens eine Regel ist nicht erfüllt

`flexi-input` unterstützt - wenn der Eingabetyp **Zahl** ist - alle Regeln, die auch für andere Zahlenfelder gelten. Bei Eingabetyp **Text** sind im Wesentlichen die `COMPONENT`-Regeln nutzbar (Längenprüfungen anderer Felder).

### Werteprüfung - `VALUE` (Zahl) [#werteprufung-value-zahl]

Vergleicht den eingetragenen Wert direkt gegen einen Grenzwert oder einen Toleranzbereich.

| Regel | Bedeutung |
|---|---|
| `VALUE>=100` | Wert muss **mindestens** 100 sein |
| `VALUE<=200` | Wert darf **höchstens** 200 sein |
| `VALUE<n` | Wert muss **strikt kleiner** als `n` sein |
| `VALUE==n` | Wert muss **genau** `n` sein |
| `VALUE!=n` | Wert darf **nicht** `n` sein |
| `VALUE>n` | Aus historischen Gründen identisch mit `VALUE>=n`. Für einen strikten *größer als* stattdessen `COMPARE:VALUE>n` verwenden |

#### Toleranzbereich

| Regel | Bedeutung |
|---|---|
| `VALUE%5:sollwert` | Wert muss innerhalb von ± 5 % des Wertes von `sollwert` liegen |
| `VALUE%MIN5:istwert` | `istwert` darf nicht mehr als 5 % **unter** dem eigenen Wert liegen |
| `VALUE%MAX5:istwert` | `istwert` darf nicht mehr als 5 % **über** dem eigenen Wert liegen |

Ist das Referenzfeld leer, wird die Regel übersprungen und das Feld als **Leer** markiert.

### Vergleich - `COMPARE` (Zahl) [#vergleich-compare-zahl]

Vergleicht zwei Ausdrücke. `VALUE` steht für den eigenen Wert, andere Feldnamen werden direkt verwendet. Konstanten sowie `+` und `-` sind erlaubt. Innerhalb von `COMPARE` sind alle Operatoren strikt.

| Regel | Bedeutung |
|---|---|
| `COMPARE:VALUE>=sollwert` | Eigener Wert muss mindestens dem `sollwert` entsprechen |
| `COMPARE:VALUE<=(sollwert+5)` | Eigener Wert darf `sollwert + 5` nicht überschreiten |
| `COMPARE:VALUE>=(sollwert-5)` | Eigener Wert darf `sollwert - 5` nicht unterschreiten |
| `COMPARE:VALUE>n` | Eigener Wert muss strikt größer als `n` sein |
| `COMPARE:VALUE==sollwert` | Eigener Wert muss exakt dem `sollwert` entsprechen |
| `COMPARE:VALUE!=vorgabewert` | Eigener Wert darf nicht dem `vorgabewert` entsprechen |

### Komponentenlänge - `COMPONENT` [#komponentenlange-component]

Prüft, ob ein **anderes** Feld einen bestimmten Inhalt hat. Wirkt typischerweise als **Alternative** zu einer Werteprüfung - wenn das andere Feld ausgefüllt ist, gilt die Prüfung als erfüllt.

| Regel | Bedeutung |
|---|---|
| `COMPONENT:bemerkung.length>0` | `bemerkung` enthält mindestens ein Zeichen |
| `COMPONENT:bemerkung.length>10` | `bemerkung` enthält mindestens 11 Zeichen |

Beispiel: Toleranz oder Bemerkung erforderlich

```json
"rules": [
  "VALUE%5:sollwert",
  "COMPONENT:bemerkung.length>0"
]
```
> Der Wert liegt innerhalb ± 5 % vom Sollwert **oder** es ist eine Bemerkung eingetragen → OK.

### Mehrere Regeln kombinieren

- Mehrere `COMPARE`-Regeln müssen **alle** erfüllt sein.
- Wird sowohl eine `VALUE`- als auch eine `COMPARE`-Regel hinterlegt, hat die `COMPARE`-Regel Vorrang.
- Werden mehrere `VALUE`-Regeln in einem Zahlenfeld hinterlegt, entscheidet die **letzte** über das Ergebnis. Für klare Prüfungen besser nur **eine** `VALUE`-Regel setzen und mit `COMPARE` oder `COMPONENT` ergänzen.

Eine vollständige Übersicht aller Regeln und ihrer Schreibweisen findet sich unter [Prüfungsregeln](/components/rules).

## Pflichtfeld vs. Validierungsregel

**Pflichtfeld** und **Validierungsregeln** wirken unabhängig voneinander:

- Das **Pflichtfeld** verhindert das Speichern bzw. die Freigabe, solange das Feld leer ist (oder die Mindest-/Höchstlänge bzw. der Mindest-/Höchstwert verletzt sind). Bei einer Verletzung erscheint der hinterlegte **Fehlertext** unter dem Feld.
- **Validierungsregeln** bewerten den eingetragenen Wert inhaltlich und werden über das Statussymbol (Haken/Kreuz) angezeigt. Ein leeres Feld wird hier als **Leer** behandelt und blockiert die Freigabe nicht.
