Signatur
Beschreibung
Die Eigenschaft disabled spiegelt das gleichnamige boolesche HTML-Attribut eines <textarea>-Elements. Ist sie true, kann der Nutzer das Feld weder bearbeiten noch fokussieren, und es reagiert nicht auf Klicks. Setzt man die Eigenschaft per JavaScript, wird das Attribut disabled im DOM hinzugefügt bzw. entfernt.
Wichtig für Formulare: Der Wert eines deaktivierten Textfelds wird beim Absenden nicht übertragen und taucht auch in FormData nicht auf. Außerdem wird es bei der Validierung übersprungen (willValidate ist false). Soll der Inhalt nur schreibgeschützt sein, aber trotzdem gesendet werden, ist readOnly die richtige Wahl.
Ein <textarea> gilt auch dann als deaktiviert, wenn es in einem deaktivierten <fieldset> liegt (außer im ersten <legend>). Die Eigenschaft disabled des Elements selbst bleibt in diesem Fall jedoch false – den tatsächlichen Zustand prüft man zuverlässig mit element.matches(":disabled").
Typische Einsatzfälle: Eingaben während eines laufenden Speichervorgangs sperren, Felder abhängig von anderen Formularoptionen freischalten oder eine Nachricht nach dem Absenden sperren.
Rückgabewert
true, wenn das Attribut disabled am Element gesetzt ist, sonst false. Zuweisbar: Jeder Wert wird in einen booleschen Wert umgewandelt.Beispiele
Zustand lesen und umschalten
// <textarea id="kommentar" disabled></textarea>
const textarea = document.querySelector('#kommentar');
console.log(textarea.disabled); // true
textarea.disabled = false; // Feld freischalten
console.log(textarea.hasAttribute('disabled'));
Feld während des Speicherns sperren
const form = document.querySelector('#feedback-form');
const textarea = form.querySelector('textarea[name="nachricht"]');
form.addEventListener('submit', async (event) => {
event.preventDefault();
// Werte VOR dem Deaktivieren auslesen – sonst fehlen sie in FormData
const daten = new FormData(form);
textarea.disabled = true;
try {
await fetch('/api/feedback', { method: 'POST', body: daten });
textarea.value = '';
} catch (fehler) {
console.error('Senden fehlgeschlagen:', fehler);
} finally {
textarea.disabled = false;
}
});
Abhängig von einer Checkbox freischalten
// <input type="checkbox" id="sonstiges"> <textarea id="details" disabled></textarea>
const checkbox = document.querySelector('#sonstiges');
const details = document.querySelector('#details');
checkbox.addEventListener('change', () => {
details.disabled = !checkbox.checked;
if (!details.disabled) details.focus();
});
Deaktivierung durch ein Fieldset erkennen
// <fieldset disabled><textarea id="notiz"></textarea></fieldset>
const notiz = document.querySelector('#notiz');
console.log(notiz.disabled); // eigenes Attribut
console.log(notiz.matches(':disabled')); // tatsächlicher Zustand
// Wichtig · Fallstricke
- Kein Formularversand: Deaktivierte Felder werden beim Absenden und in
new FormData(form)ausgelassen. Wer den Wert trotzdem übertragen will, nutztreadOnlyoder liest den Wert vor dem Deaktivieren aus. - Fieldset-Vererbung:
disabledgibt nur das eigene Attribut wieder. Ob ein Vorfahr-<fieldset disabled>das Feld sperrt, zeigt nur:disabledbzw.matches(':disabled'). - Barrierefreiheit: Deaktivierte Felder sind nicht per Tastatur erreichbar, und Screenreader überspringen sie oft. Wichtige Inhalte sollten daher nicht ausschließlich in deaktivierten Feldern stehen; alternativ
aria-disabled="true"in Verbindung mitreadOnlynutzen. - Keine Sicherheitsmaßnahme: Das Attribut lässt sich über die Entwicklerwerkzeuge entfernen – Eingaben immer serverseitig prüfen.
- Deaktivierte Elemente lösen keine Maus-Ereignisse wie
clickaus; die Validierung überspringt sie (willValidate === false). - Kompatibilität: Wird von allen Browsern seit jeher unterstützt.