Start · Sprachen · JavaScript · Referenz · HTMLFieldSetElement.willValidate

HTMLFieldSetElement.willValidate

Eigenschaft

Schreibgeschützte Eigenschaft, die bei <code>&lt;fieldset&gt;</code>-Elementen immer <code>false</code> liefert, weil sie keine Kandidaten für die Einschränkungsvalidierung sind.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

HTMLFieldSetElement.willValidate

Beschreibung

Die Eigenschaft willValidate gibt an, ob ein Element bei der Formularübermittlung von der Einschränkungsvalidierung (Constraint Validation API) geprüft wird. Beim HTMLFieldSetElement ist der Wert immer false. Ein <fieldset> hat selbst keinen Wert, den man validieren könnte. Es gruppiert nur andere Formularsteuerelemente.

Die Eigenschaft gibt es trotzdem, damit alle Formularelemente (input, select, textarea, button, output, fieldset, object) dieselbe Schnittstelle haben. So kannst du über form.elements laufen und bei jedem Element willValidate abfragen, ohne vorher den Elementtyp zu prüfen.

Das heißt aber nicht, dass die Felder innerhalb eines Fieldsets nicht geprüft werden. Wenn ein Fieldset disabled ist, werden alle enthaltenen Steuerelemente deaktiviert. Außer denen im ersten <legend> haben sie dann ebenfalls willValidate === false und werden nicht übermittelt. Auf diesem Weg beeinflusst ein Fieldset die Validierung doch.

Rückgabewert

Typ
boolean
Beschreibung
Immer false, weil <fieldset>-Elemente nie Kandidaten für die Einschränkungsvalidierung sind.

Beispiele

Wert direkt abfragen

// HTML: <form><fieldset id="adresse"><input name="plz" required></fieldset></form>
const fieldset = document.querySelector('#adresse');
const input = fieldset.querySelector('input');

console.log(fieldset.willValidate); // Fieldset selbst
console.log(input.willValidate);    // enthaltenes Feld
false true

Nur validierbare Elemente eines Formulars sammeln

const form = document.querySelector('form');

// Einheitlich über alle Elemente laufen – fieldset fällt automatisch heraus
const pruefbar = [...form.elements].filter((el) => el.willValidate);

const ungueltig = pruefbar.filter((el) => !el.checkValidity());
console.log(`${pruefbar.length} prüfbar, ${ungueltig.length} ungültig`);
ungueltig.forEach((el) => console.log(el.name, el.validationMessage));
2 prüfbar, 1 ungültig plz Füllen Sie dieses Feld aus.

Deaktiviertes Fieldset schließt enthaltene Felder aus

// HTML: <fieldset id="liefer"><input name="strasse" required></fieldset>
const liefer = document.querySelector('#liefer');
const strasse = liefer.querySelector('[name="strasse"]');

console.log(strasse.willValidate); // true

// Z. B. wenn "Lieferadresse = Rechnungsadresse" angehakt ist
liefer.disabled = true;
console.log(liefer.willValidate);  // bleibt false
console.log(strasse.willValidate); // jetzt ebenfalls false
true false false

// Wichtig · Fallstricke

  • Kein Rückschluss auf die Kindelemente: fieldset.willValidate === false heißt nicht, dass die enthaltenen Felder ungeprüft bleiben. Frage dafür die Felder einzeln ab oder nutze fieldset.checkValidity(). Beim Fieldset liefert checkValidity() immer true, fieldset.validity.valid ist also kein Ersatz.
  • Schreibgeschützt: Eine Zuweisung wie fieldset.willValidate = true wird im nicht-strikten Modus stillschweigend ignoriert. Im strikten Modus löst sie einen TypeError aus.
  • disabled-Sonderfall: Steuerelemente im ersten <legend> eines deaktivierten Fieldsets bleiben aktiv und damit validierbar.
  • Kompatibilität: Wird von allen aktuellen Browsern unterstützt (Chrome, Firefox, Safari, Edge). Im Internet Explorer war die Unterstützung von Fieldsets bei der Constraint Validation API lückenhaft.