Start · Sprachen · JavaScript · Referenz · HTMLFormElement.autocomplete

HTMLFormElement.autocomplete

Eigenschaft

Liest oder setzt das <code>autocomplete</code>-Attribut eines Formulars: <code>"on"</code> erlaubt die automatische Vervollständigung durch den Browser, <code>"off"</code> unterbindet sie.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

HTMLFormElement.autocomplete

Beschreibung

Die Eigenschaft autocomplete eines <form>-Elements spiegelt das gleichnamige HTML-Attribut wider. Sie legt den Standard für alle Formularsteuerelemente des Formulars fest, also ob der Browser zuvor eingegebene Werte vorschlagen oder automatisch einfügen darf.

Gültige Werte sind "on" und "off". Fehlt das Attribut oder enthält es einen ungültigen Wert, gibt die Eigenschaft "on" zurück (limitierte, bekannte Werte). Wird ein Wert geschrieben, setzt der Browser das Attribut entsprechend im DOM.

Einzelne Felder können den Formular-Standard mit ihrem eigenen autocomplete-Attribut überschreiben, z. B. autocomplete="email" oder autocomplete="new-password". Detaillierte Feldhinweise (Autofill-Tokens) gibt es nur an den Feldern selbst, nicht am Formular.

Typische Anwendungsfälle: Einmalcodes (OTP), Captcha-Felder, Suchmasken mit dynamischen Vorschlägen oder sensible Admin-Formulare, bei denen gespeicherte Eingaben stören oder ein Risiko darstellen.

Parameter

Name Typ Default Beschreibung
$value "on" | "off" "on" Neuer Wert beim Setzen der Eigenschaft. Andere Zeichenketten werden zwar ins Attribut geschrieben, beim Lesen aber als "on" interpretiert.

Rückgabewert

Typ
string
Beschreibung
"on" oder "off". Bei fehlendem oder ungültigem Attribut "on".

Beispiele

Aktuellen Wert auslesen

// <form id="login" autocomplete="off">…</form>
const form = document.getElementById('login');
console.log(form.autocomplete);

// Formular ohne Attribut
const neu = document.createElement('form');
console.log(neu.autocomplete);
off on

Autovervollständigung für ein OTP-Formular abschalten

const otpForm = document.querySelector('#otp-form');
otpForm.autocomplete = 'off';

// Das Attribut ist nun im DOM gesetzt
console.log(otpForm.getAttribute('autocomplete'));
off

Formular-Standard und Feld-Ausnahme kombinieren

const form = document.createElement('form');
form.autocomplete = 'off';

const email = document.createElement('input');
email.type = 'email';
email.name = 'email';
email.autocomplete = 'email'; // überschreibt den Formular-Standard

const code = document.createElement('input');
code.name = 'code';
code.autocomplete = 'one-time-code';

form.append(email, code);
document.body.append(form);

console.log(form.autocomplete, email.autocomplete, code.autocomplete);
off email one-time-code

Ungültige Werte werden normalisiert

const form = document.createElement('form');
form.autocomplete = 'nope';
console.log(form.getAttribute('autocomplete')); // Attribut roh
console.log(form.autocomplete);                 // normalisiert
nope on

// Wichtig · Fallstricke

  • Kein Sicherheitsmechanismus: Viele Browser ignorieren autocomplete="off" absichtlich bei Anmeldefeldern, damit Passwortmanager weiter funktionieren. Für Registrierungs- oder Passwortänderungs-Formulare verwendet man besser autocomplete="new-password" am Passwortfeld.
  • "off" wirkt je nach Browser auf Autofill-Vorschläge und auf den Formularverlauf unterschiedlich. Chrome ignoriert den Wert teilweise bei Adress- und Zahlungsdaten.
  • Bei "off" speichert der Browser Feldwerte meist nicht im Seiten-Cache (bfcache). Nach dem Zurück-Navigieren können Eingaben also leer sein.
  • Feld-Attribute haben Vorrang vor dem Formular-Standard. Ein Feld mit autocomplete="on" in einem "off"-Formular wird wieder vervollständigt.
  • Die Eigenschaft wird von allen modernen Browsern unterstützt. Die Wirkung auf die Oberfläche legt aber jeder Browser selbst fest.