Skip to content

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

html
<r-input placeholder="Text eingeben"></r-input>

API-Referenz

Eigenschaften

EigenschaftTypStandardBeschreibung
labelstring''Feste Beschriftung, gezeichnet über dem Feld
placeholderstring''Platzhaltertext, an das native <input> weitergereicht
valuestring''Wert des Feldes; als Attribut gespiegelt und an das Formular weitergegeben
disabledbooleanfalseOb das Feld deaktiviert ist
typestring''Nativer Eingabetyp für das innere Bedienelement (text, password, number, …)
iconstring''Name des führenden Symbols im Feld (als r-icon gezeichnet)
namestring''Feldname für die Teilnahme an einem Formular
statusstring''Validierungsstatus: error, warning
messagestring''Hilfs- bzw. Validierungstext unter dem Feld
minstring''Kleinster Wert; bei type="number" an das innere <input> weitergereicht
maxstring''Größter Wert; bei type="number" an das innere <input> weitergereicht
stepstring''Schrittweite; bei type="number" an das innere <input> weitergereicht
requiredbooleanfalseAn das innere <input> weitergereicht, damit die native Prüfung greift
sheetstring''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).

html
<r-input label="Benutzername"></r-input>

Platzhalter placeholder

Verhält sich wie das native Attribut placeholder.

html
<r-input placeholder="Benutzernamen eingeben"></r-input>

Wert value

html
<r-input value="1234"></r-input>

Deaktivierter Zustand disabled

html
<r-input label="Benutzername" disabled></r-input>

Symbol icon

html
<r-input icon="user"></r-input>

Eingabetypen type

html
<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.

html
<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.

html
<r-input label="E-Mail" message="Wir geben deine E-Mail-Adresse niemals weiter"></r-input>

Feldname im Formular name

html
<r-input name="username" label="Benutzername"></r-input>

Ereignisse

Beide Ereignisse werden als CustomEvent ausgelöst und tragen den aktuellen Wert in detail.

EreignisWann es ausgelöst wirddetail
inputBei jedem Tastendruck (spiegelt das native input){ value: string }
changeBeim Bestätigen bzw. Fokusverlust (spiegelt das native change){ value: string }

Eingabeereignis input

javascript
const input = document.createElement('r-input');
input.setAttribute('label', 'Benutzername');
input.addEventListener('input', (event) => {
  console.log('Tippt:', event.detail.value);
});

Änderungsereignis change

javascript
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.

html
<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.

html
<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.

PartElement
inputDie Hülle des Feldes
contentDas innere native <input>-Bedienelement
labelDie feste Beschriftung über dem Feld (wenn label gesetzt ist)
messageDer Hilfs- bzw. Validierungstext (wenn message gesetzt ist)
css
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:

css
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 placeholder als Eingabehinweis, nicht als Ersatz für eine Beschriftung.
  • Status und Meldung: Setze status gemeinsam mit message, damit der Zustand nicht allein über Farbe signalisiert wird.
  • Symbole: Ein passendes icon macht 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.

Veröffentlicht unter der MIT-Lizenz.