Input
Eingabekomponente zum Erfassen von Inhalt über die Tastatur: das grundlegendste Formularelement.
Einsetzen, wenn du ein Textfeld mit fester Beschriftung darüber, führendem Symbol, Validierungsstatus samt Meldung und Teilnahme an nativen Formularen brauchst:
<r-input>deckt Text-, Passwort- und Zahleneingabe ab.
Schnellstart
Grundlegende Verwendung
<r-input placeholder="Text eingeben"></r-input>API-Referenz
Eigenschaften
| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
label | string | '' | Feste Beschriftung, gezeichnet über dem Feld |
placeholder | string | '' | Platzhaltertext, an das native <input> weitergereicht |
value | string | '' | Wert des Feldes; als Attribut gespiegelt und an das Formular weitergegeben |
disabled | boolean | false | Ob das Feld deaktiviert ist |
type | string | '' | Nativer Eingabetyp für das innere Bedienelement (text, password, number, …) |
icon | string | '' | Name des führenden Symbols im Feld (als r-icon gezeichnet) |
name | string | '' | Feldname für die Teilnahme an einem Formular |
status | string | '' | Validierungsstatus: error, warning |
message | string | '' | Hilfs- bzw. Validierungstext unter dem Feld |
min | string | '' | Kleinster Wert; bei type="number" an das innere <input> weitergereicht |
max | string | '' | Größter Wert; bei type="number" an das innere <input> weitergereicht |
step | string | '' | Schrittweite; bei type="number" an das innere <input> weitergereicht |
required | boolean | false | An das innere <input> weitergereicht, damit die native Prüfung greift |
sheet | string | '' | CSS, das in den Shadow Root eingefügt wird |
Beschriftung label
Eine feste Beschriftung über dem Feld: immer sichtbar, überlagert nie den Inhalt daneben und verschiebt beim Fokussieren nichts (oben ausgerichtete Beschriftungen lassen Formulare außerdem schneller ausfüllen als eingebettete oder schwebende; siehe Luke Wroblewskis Eyetracking-Untersuchung).
<r-input label="Benutzername"></r-input>Platzhalter placeholder
Verhält sich wie das native Attribut placeholder.
<r-input placeholder="Benutzernamen eingeben"></r-input>Wert value
<r-input value="1234"></r-input>Deaktivierter Zustand disabled
<r-input label="Benutzername" disabled></r-input>Symbol icon
<r-input icon="user"></r-input>Eingabetypen type
<r-input icon="lock" type="password" placeholder="Passwort"></r-input>
<r-input type="number" placeholder="Zahl"></r-input>Status status
Setze status immer zusammen mit einer message, damit der Zustand über Text und nicht allein über Farbe ankommt.
<r-input status="error" label="Benutzername" message="Dieses Feld ist erforderlich"></r-input>
<r-input status="warning" label="Benutzername" message="Prüfe diesen Wert"></r-input>Hilfstext message
Zeichnet Hilfs- bzw. Validierungstext unter dem Feld.
<r-input label="E-Mail" message="Wir geben deine E-Mail-Adresse niemals weiter"></r-input>Feldname im Formular name
<r-input name="username" label="Benutzername"></r-input>Ereignisse
Beide Ereignisse werden als CustomEvent ausgelöst und tragen den aktuellen Wert in detail.
| Ereignis | Wann es ausgelöst wird | detail |
|---|---|---|
input | Bei jedem Tastendruck (spiegelt das native input) | { value: string } |
change | Beim Bestätigen bzw. Fokusverlust (spiegelt das native change) | { value: string } |
Eingabeereignis input
const input = document.createElement('r-input');
input.setAttribute('label', 'Benutzername');
input.addEventListener('input', (event) => {
console.log('Tippt:', event.detail.value);
});Änderungsereignis change
const input = document.createElement('r-input');
input.setAttribute('label', 'Benutzername');
input.addEventListener('change', (event) => {
console.log('Wert geändert:', event.detail.value);
});Formularanbindung
r-input ist ein formularassoziiertes Custom Element (static formAssociated = true). Es hängt ElementInternals an und gibt seinen Wert über setFormValue weiter, sodass new FormData(form) das Feld erfasst, wenn es ein echter Nachfahre eines nativen <form> ist; setze name, um dem Wert einen Schlüssel zu geben. Siehe Formulare für den Helfer serializeForm(), der ein Absenden in ein einfaches Objekt verwandelt.
<form>
<r-input name="username" label="Benutzername"></r-input>
</form>Zurücksetzen: Ein natives form.reset() (oder ein <button type="reset">) stellt den Wert wieder her, den das Feld beim ersten Verbinden hatte — umgesetzt über formResetCallback(), einen der Lebenszyklus-Hooks, die der Browser bei einem formularassoziierten Custom Element von selbst aufruft.
Validierung: required macht ein leeres Feld über ElementInternals.setValidity() ungültig; form.checkValidity() / form.reportValidity() sehen das, und beim Absenden erscheint die native Validierungsblase des Browsers am Feld. disabled-Felder blockieren die Validierung nie, genau wie ein natives <input>. r-input stellt außerdem die üblichen Methoden und Eigenschaften eines nativen Feldes bereit: checkValidity(), reportValidity(), validity, validationMessage.
<form>
<r-input name="username" label="Benutzername" required></r-input>
<button type="submit">Absenden</button>
</form>CSS-Parts
Über ::part() für die Gestaltung von außen bereitgestellt.
| Part | Element |
|---|---|
input | Die Hülle des Feldes |
content | Das innere native <input>-Bedienelement |
label | Die feste Beschriftung über dem Feld (wenn label gesetzt ist) |
message | Der Hilfs- bzw. Validierungstext (wenn message gesetzt ist) |
r-input::part(content) {
font-size: 16px;
}Styling
<r-input> stellt 61 eigene CSS-Custom-Properties bereit, dazu die semantischen Tokens, die es aus dem Theme liest. Setze eines überall dort, wo es vererbt wird: :root, ein umgebendes Element oder das Element selbst:
r-input {
--ran-input-color: var(--ran-color-text-secondary);
}Parts: content · input · label · message
Die vollständige Liste steht bei den Style-Tokens; welches Token wofür gedacht ist, klärt das Designsystem.
Bewährte Vorgehensweisen
- Beschriftungen: Gib ein aussagekräftiges
label, damit das Feld einen zugänglichen Namen hat. - Platzhalter: Nimm
placeholderals Eingabehinweis, nicht als Ersatz für eine Beschriftung. - Status und Meldung: Setze
statusgemeinsam mitmessage, damit der Zustand nicht allein über Farbe signalisiert wird. - Symbole: Ein passendes
iconmacht das Feld schneller wiedererkennbar. - Typen: Wähle den zum Inhalt passenden
type(text,password,number, …). - Formulare: Setze
name, wenn du den Wert innerhalb eines Formulars einsammelst.