Signatur
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
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
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));
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
// Wichtig · Fallstricke
- Kein Rückschluss auf die Kindelemente:
fieldset.willValidate === falseheißt nicht, dass die enthaltenen Felder ungeprüft bleiben. Frage dafür die Felder einzeln ab oder nutzefieldset.checkValidity(). Beim Fieldset liefertcheckValidity()immertrue,fieldset.validity.validist also kein Ersatz. - Schreibgeschützt: Eine Zuweisung wie
fieldset.willValidate = truewird im nicht-strikten Modus stillschweigend ignoriert. Im strikten Modus löst sie einenTypeErroraus. - 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.