Start · Sprachen · JavaScript · Referenz · HTMLInputElement.placeholder

HTMLInputElement.placeholder

Eigenschaft

Liest oder setzt den Platzhaltertext eines <code>&lt;input&gt;</code>-Elements: einen kurzen Hinweis, der angezeigt wird, solange das Feld leer ist.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

HTMLInputElement.placeholder

Beschreibung

Die Eigenschaft placeholder spiegelt das gleichnamige HTML-Attribut eines <input>-Elements wider. Sie enthält einen kurzen Hinweistext, zum Beispiel ein Beispielformat wie „name@beispiel.de“. Der Browser zeigt ihn im Feld an, solange noch kein Wert eingegeben wurde. Sobald der Wert nicht mehr leer ist, verschwindet der Platzhalter.

Die Eigenschaft ist lesbar und schreibbar. Beim Setzen wird das Attribut placeholder im DOM aktualisiert. Beim Lesen erhält man den Attributwert als Zeichenkette oder "", wenn kein Attribut vorhanden ist. Zeilenumbrüche (CR/LF) im Wert werden bei der Darstellung entfernt.

Wirkung hat placeholder nur bei textartigen Eingabetypen: text, search, url, tel, email, password und number. Bei anderen Typen wie checkbox, date oder range wird der Wert zwar gespeichert, aber nicht angezeigt.

Wichtig: Ein Platzhalter ist kein Ersatz für ein <label>. Er verschwindet bei der Eingabe, hat oft geringen Kontrast und wird von Screenreadern nicht zuverlässig vorgelesen. Nutze ihn nur für ergänzende Hinweise.

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Platzhaltertext oder "", wenn kein placeholder-Attribut gesetzt ist. Beim Zuweisen wird der Wert in eine Zeichenkette umgewandelt.

Beispiele

Platzhalter lesen und setzen

// HTML: <input id="email" type="email" placeholder="name@beispiel.de">
const input = document.querySelector('#email');

console.log(input.placeholder);

input.placeholder = 'z. B. max@firma.de';
console.log(input.getAttribute('placeholder'));
name@beispiel.de z. B. max@firma.de

Platzhalter abhängig von einer Auswahl anpassen

// HTML:
// <select id="kontaktart"><option value="email">E-Mail</option><option value="tel">Telefon</option></select>
// <input id="kontakt" type="email">
const select = document.querySelector('#kontaktart');
const kontakt = document.querySelector('#kontakt');

const hinweise = {
  email: { type: 'email', placeholder: 'name@beispiel.de' },
  tel: { type: 'tel', placeholder: '+49 30 1234567' },
};

const aktualisieren = () => {
  const { type, placeholder } = hinweise[select.value];
  kontakt.type = type;
  kontakt.placeholder = placeholder;
};

select.addEventListener('change', aktualisieren);
aktualisieren();
console.log(kontakt.placeholder);
name@beispiel.de

Platzhalter entfernen und prüfen, ob er gerade angezeigt wird

const input = document.createElement('input');
input.placeholder = 'Suchbegriff …';
document.body.append(input);

// :placeholder-shown trifft zu, solange das Feld leer ist
console.log(input.matches(':placeholder-shown'));

input.value = 'JavaScript';
console.log(input.matches(':placeholder-shown'));

// Leerer String entfernt nicht das Attribut – dafür removeAttribute nutzen
input.placeholder = '';
console.log(input.hasAttribute('placeholder'));
input.removeAttribute('placeholder');
console.log(input.placeholder === '');
true false true true

// Wichtig · Fallstricke

  • Barrierefreiheit: Verwende placeholder nie als einzige Beschriftung. Ein sichtbares <label> oder ein aria-label ist Pflicht. Der Platzhaltertext hat standardmäßig oft zu wenig Kontrast (WCAG). Mit ::placeholder lässt er sich per CSS gestalten.
  • Kein Vorgabewert: Der Platzhalter wird nicht mit dem Formular übertragen und ist nicht value. Ein Feld mit required bleibt ungültig, auch wenn ein Platzhalter angezeigt wird.
  • Nicht unterstützte Typen: Bei date, color, checkbox, file usw. wird der Wert ignoriert. Es gibt keinen Fehler, aber auch keine Anzeige.
  • Zuweisung: input.placeholder = null ergibt den Text "null". Mit removeAttribute('placeholder') wird das Attribut sauber entfernt.
  • Sicherheit: Der Wert wird als reiner Text dargestellt, HTML darin wird nicht interpretiert. Es besteht also kein XSS-Risiko.
  • Kompatibilität: Wird von allen modernen Browsern unterstützt. Internet Explorer kennt die Eigenschaft ab Version 10, hat aber Eigenheiten: Der Platzhalter verschwindet dort schon beim Fokus.