TextBox
Einzeiliges Texteingabefeld. Unterstützt Label, Placeholder, Floating Label, ReadOnly, Disabled, Clear-Button, verschiedene InputTypes, Größen, Keyboard-Events und Validierung.
Grundvarianten
Standard, mit Placeholder, ohne Label und mit Clear-Button.Standard
Wert:
Mit Placeholder
Ohne Label
Floating Label deaktiviert
Mit Clear-Button
Wert:
Clear mit OnClear-Callback
Gelöscht: 0×
Zustände
ReadOnly: Wert ist sichtbar und kopierbar, aber nicht editierbar – gestrichelter Rahmen, normaler Text, kein Sperr-Cursor.Disabled: Feld ist vollständig deaktiviert – ausgegraut, halbtransparent, Cursor zeigt Sperre.
ReadOnly
ReadOnly (leer)
Disabled
Disabled (leer)
Width
Über denWidth-Parameter wird die Breite des Felds auf einen beliebigen CSS-Wert fixiert. Ohne Parameter gilt width: 100%.
300px
50%
20rem
Aktueller Wert
InputType
Unterstützte HTML-Input-Typen:text, password, email, search, tel, url.
text (Standard)
password
password + Toggle
Wert:
email
search
tel
url
Size
Alle fünf Größen vonXs bis Xl – alle Felder teilen denselben Bindewert.
Xs
Sm
Md (Standard)
Lg
Xl
Aktueller Wert
ActionButtons
Built-in-Buttons (ShowCopyButton, ShowSearchButton) und benutzerdefinierte Buttons via ActionButtons RenderFragment (<button class="oo-textbox--icon-btn">).
Text wird nie von Buttons überlagert.
ShowCopyButton
Wert:
ShowSearchButton
ShowSearchButton + HideWhenEmpty
Kombination Built-ins
RenderFragment (eigene Buttons)
Eingabemaske (Mask)
DieMask-Eigenschaft aktiviert eine clientseitige Eingabemaske via JavaScript – kein SignalR-Roundtrip beim Tippen.
Tokens: 9 = Ziffer, a = Buchstabe, * = beliebig. Alle anderen Zeichen sind Trennzeichen und werden automatisch eingefügt.
Vordefinierte Aliases: date, time, datetime, phone, iban-de, plz.
Datum (
Mask="date")Wert:
Uhrzeit (
Mask="time")Wert:
Datum+Zeit (
Mask="datetime")Wert:
Telefon (
Mask="phone")Wert:
PLZ (
Mask="plz")Wert:
IBAN-DE (
Mask="iban-de")Wert:
Benutzerdefiniert (
Mask="99/aa-9999")Wert:
Keyboard-Events
OnEnter reagiert via JS ohne Roundtrip beim normalen Tippen.
OnKeyDown feuert bei jedem Tastendruck (SignalR-Roundtrip).
OnEnter
Bestätigt: –
OnKeyDown
Letzte Taste: –
AfterValueChanged
Änderungen: 0×
AutoSaveCallback
AutoSaveCallback wird nach jeder Wertänderung ausgelöst – standardmäßig nur wenn das Feld gültig ist (TriggerAutoSaveCallbackOnlyIfValid).
Nur bei gültigem Wert
Gespeichert: –
Immer speichern
Gespeichert: –
CustomValidationMethod
Eigene Validierungslogik ohne DataAnnotations – direkt alsFunc<string, bool>.
Nur Großbuchstaben
Mindestlänge 5
Validierung mit DataAnnotations
Integration inEditContext via Form-Komponente und DataAnnotationsValidator. ShowValidationTooltip zeigt Fehlermeldungen inline.
ValidateOnInput
ValidateOnInput="true" (Standard): Validierung sofort beim Tippen. false: erst nach Verlassen des Feldes.
ValidateOnInput = true
ValidateOnInput = false
class & style
Beliebige HTML-Attribute (class, style, data-*, aria-*) werden an den Input-Wrapper durchgereicht.
class
style
aria-label
data-testid
SKILL.md – Textbox
--- name: TextBox description: Onesown Blazor Komponente TextBox (Inputs). Verwende diesen Skill wenn du die TextBox-Komponente verwenden, konfigurieren oder debuggen moechtest. --- # TextBox **Namespace:** `Onesown.Blazor.Components` **Kategorie:** Inputs **Basisklasse:** `FormControlBase` Einzeiliges Texteingabefeld mit Floating-Label, DataAnnotations-Validierung, optionalem Clear-Button und performantem Enter-Event via JavaScript (kein SignalR-Roundtrip beim normalen Tippen). **Live-Demo:** https://components.schini.com/demo/textbox ## Parameter | Parameter | Typ | Standard | Beschreibung | |---|---|---|---| | ``ValidateOnInput`` | ``bool`` | ``true`` | Validiert das Feld bei jedem Tastendruck (oninput), nicht erst beim Verlassen des Felds (onchange). Standard: true. | | ``ValueExpression`` | ``Expression<Func<object>>`` | | LINQ-Expression auf die gebundene Model-Property. Wird benötigt für DataAnnotations-Validierung, Floating-Label-Text und MaxLength-Auswertung. | | ``ValueChanged`` | ``EventCallback<string>`` | | EventCallback für Two-Way-Binding mit @bind-Value. Wird nach jeder Wertänderung ausgelöst. | | ``Value`` | ``string`` | | Aktuell gebundener Textwert. | | ``CustomValidationMethod`` | ``Func<string, bool>`` | | Optionale zusätzliche Validierungsfunktion. Gibt true zurück wenn der Wert gültig ist, false wenn nicht. Ergänzt DataAnnotations-Validierung. | | ``Readonly`` | ``bool`` | | Setzt das Feld in den Nur-Lesen-Modus: Eingabe gesperrt, aber nicht ausgegraut. Unterschied zu disabled: der Wert bleibt selektierbar und kopierbar. | | ``Width`` | ``string`` | | Breite der Textbox. Beliebiger CSS-Wert (z.B. "300px", "50%", "20rem"). Leer = 100% (Standard). | | ``InputType`` | ``string`` | ``"text"`` | HTML-Input-Typ. Mögliche Werte: text (Standard), password, email, search, tel, url. Steuert Masking und mobile Tastatur. | | ``OnKeyDown`` | ``EventCallback<Microsoft.AspNetCore.Components.Web.KeyboardEventArgs>`` | | Wird bei jedem Tastendruck ausgelöst (Blazor-seitig, erzeugt bei jedem Druck einen SignalR-Roundtrip). Für reine Enter-Erkennung stattdessen OnEnter verwenden. | | ``OnEnter`` | ``EventCallback`` | | Wird ausgelöst wenn der Nutzer die Enter-Taste drückt. Implementiert via JavaScript-Listener – normales Tippen erzeugt keinen Roundtrip; nur Enter löst einen SignalR-Aufruf aus. | | ``Mask`` | ``string`` | | Eingabemaske für das Textfeld. Steuert via JavaScript, welche Zeichen an welcher Position erlaubt sind. Masken-Tokens: 9 = Ziffer, a = Buchstabe, * = beliebig. Alle anderen Zeichen sind Trennzeichen und werden automatisch eingefügt. Vordefinierte Aliases: "date" (TT.MM.JJJJ), "time" (HH:MM), "datetime" (TT.MM.JJJJ HH:MM), "phone", "iban-de", "plz". Beispiele: "99.99.9999", "(999) 999-9999", "aa-999". | | ``ShowClearButton`` | ``bool`` | ``false`` | Zeigt ein X-Symbol rechts im Eingabefeld zum direkten Löschen des Werts. Geeignet für Such- und Filterfelder. Standard: false. | | ``ShowPasswordToggle`` | ``bool`` | ``false`` | Zeigt einen Augen-Icon-Toggle zum Anzeigen/Verbergen des Passworts. Nur aktiv wenn InputType="password". Standard: false. | | ``ShowCopyButton`` | ``bool`` | ``false`` | Zeigt einen Copy-Button der den aktuellen Wert in die Zwischenablage kopiert. Nach dem Klick wechselt das Icon kurz zu einem Häkchen. Standard: false. | | ``ShowSearchButton`` | ``bool`` | ``false`` | Zeigt einen Such-Button rechts im Eingabefeld. Löst aus. Standard: false. | | ``HideSearchButtonWhenEmpty`` | ``bool`` | ``false`` | Wenn true wird der Such-Button ausgeblendet sobald das Feld leer ist. Standard: false. | | ``OnSearch`` | ``EventCallback`` | | Wird ausgelöst wenn der Such-Button geklickt wird. Ist kein Handler gesetzt, wird aufgerufen. | | ``ActionButtons`` | ``RenderFragment`` | | Optionaler RenderFragment für eigene Buttons rechts im Eingabefeld. Verwende <button class="oo-textbox--icon-btn"> für konsistentes Styling. | | ``OnClear`` | ``EventCallback`` | | Wird ausgelöst nachdem der Nutzer den Clear-Button gedrückt hat und der Wert auf null gesetzt wurde. | ## Geerbte Parameter (FormControlBase) | Parameter | Typ | Standard | Beschreibung | |---|---|---|---| | ``Size`` | ``string`` | ``OoSize.Md`` | Größe der Komponente. Mögliche Werte: OoSize.Xs, OoSize.Sm, OoSize.Md, OoSize.Lg, OoSize.Xl. Wird als CSS-Klasse am Root-Element gesetzt. | | ``Id`` | ``string`` | ``Generator.GenerateRandomHtmlTagID()`` | Eindeutige HTML-ID des Input-Elements. Wird automatisch generiert und kann überschrieben werden (z. B. für Labels mit for-Attribut). | | ``ShowLabel`` | ``bool`` | ``true`` | Blendet das Label über dem Eingabefeld ein oder aus. Standard: true. | | ``IsFloatingLabel`` | ``bool`` | ``true`` | Aktiviert das schwebende Label (Floating Label), das beim Fokus oder bei Eingabe nach oben animiert. Standard: true. | | ``Label`` | ``string`` | | Beschriftung des Eingabefelds. Wird auch als Accessible-Name für Screenreader verwendet. | | ``Placeholder`` | ``string`` | ``" "`` | Platzhaltertext im leeren Eingabefeld. Standard: Leerzeichen (verhindert Floating-Label-Sprung in Chrome). | | ``AutoSaveCallback`` | ``EventCallback`` | | Wird nach jeder Wertänderung ausgelöst und signalisiert der Seite, dass gespeichert werden soll. Kombinierbar mit TriggerAutoSaveCallbackOnlyIfValid. | | ``TriggerAutoSaveCallbackOnlyIfValid`` | ``bool`` | ``true`` | Steuert ob AutoSaveCallback nur bei gültigem Wert ausgelöst wird. Standard: true. | | ``AfterValueChanged`` | ``EventCallback`` | | Wird nach jeder Wertänderung ausgelöst, unabhängig von der Gültigkeit des Werts. Geeignet für Live-Vorschau oder Seiteneffekte. | | ``ShowValidationTooltip`` | ``bool`` | ``false`` | Zeigt Validierungsmeldungen als Tooltip neben dem Feld statt als Text darunter. Standard: false. | ## Hinweise - Immer @bind-Value für Two-Way-Binding verwenden - Für Formular-Validierung ValueExpression="() => _model.Property" setzen - Komponente muss innerhalb eines <Form>- oder <EditForm>-Containers liegen, damit der EditContext greift - AutoSaveCallback wird nach jeder gültigen Änderung ausgelöst, wenn TriggerAutoSaveCallbackOnlyIfValid=true (Standard) - AfterValueChanged wird nach jeder Änderung ausgelöst, unabhängig von der Gültigkeit - ShowValidationTooltip=true zeigt Validierungsmeldungen als Tooltip statt unter dem Feld - Passwortfeld: InputType="password" setzt den nativen Passwort-Masking-Modus - Suchfelder: ShowClearButton="true" zeigt ein X zum direkten Löschen des Werts - Enter-Taste: OnEnter wird per JS ausgelöst und erzeugt nur bei Enter einen Roundtrip - Echtzeit-Validierung: ValidateOnInput="true" (Standard) validiert bei jedem Tastendruck - Wert auf null setzen: ClearValueAsync() löscht den Wert programmatisch und löst OnClear aus - MaxLength wird automatisch aus [MaxLength]-DataAnnotation gelesen, wenn ValueExpression gesetzt ist