Signatur
Beschreibung
Die Eigenschaft size des HTMLInputElement-Interfaces spiegelt das HTML-Attribut size wider. Sie legt fest, wie viele Zeichen in einem Eingabefeld ungefähr gleichzeitig sichtbar sind – also die Anzeigebreite, nicht die maximal erlaubte Eingabelänge. Der Wert ist eine positive Ganzzahl (unsigned long); fehlt das Attribut oder ist es ungültig, liefert die Eigenschaft den Standardwert 20.
Wirksam ist size nur bei textartigen Feldern: text, search, tel, url, email und password. Bei anderen Typen wie number, date oder checkbox wird das Attribut vom Browser ignoriert, die Eigenschaft lässt sich aber trotzdem lesen und schreiben.
Die tatsächliche Pixelbreite hängt von der Schriftart ab, da der Browser mit einer durchschnittlichen Zeichenbreite rechnet. Für pixelgenaue Layouts ist CSS (width, oder ch-Einheiten) die bessere Wahl; size eignet sich vor allem für einfache Formulare oder als sinnvolle Vorgabe, wenn kein CSS greift. Wer die Eingabelänge begrenzen will, braucht maxLength.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $wert (beim Setzen) | number | 20 | Positive Ganzzahl größer als 0. Wird intern in eine vorzeichenlose Ganzzahl umgewandelt und als Attribut size geschrieben. |
Rückgabewert
0, negativ oder kein Zahlwert), wird 20 zurückgegeben.Beispiele
Größe lesen und Standardwert erkennen
// <input id="plz" type="text" size="5">
// <input id="name" type="text">
const plz = document.getElementById('plz');
const name = document.getElementById('name');
console.log(plz.size); // explizit gesetzt
console.log(name.size); // kein Attribut -> Standardwert
Feldbreite dynamisch an den Inhaltstyp anpassen
const feld = document.querySelector('#kennung');
const auswahl = document.querySelector('#art');
const breiten = { plz: 5, iban: 34, telefon: 15 };
auswahl.addEventListener('change', () => {
feld.size = breiten[auswahl.value] ?? 20;
console.log(`Neue Breite: ${feld.size} Zeichen`);
console.log(feld.getAttribute('size')); // Attribut wird mitgesetzt
});
Ungültige Werte abfangen
const input = document.createElement('input');
try {
input.size = 0; // 0 ist nicht erlaubt
} catch (err) {
console.log(err.name);
}
input.setAttribute('size', 'abc'); // ungültiges Attribut
console.log(input.size);
// Wichtig · Fallstricke
- Nicht mit
maxLengthverwechseln:sizesteuert nur die Anzeigebreite. Nutzer können trotzdem beliebig viele Zeichen eingeben. - Der Wert
0wirft einen Fehler: Wirdsize = 0gesetzt, wirft der Browser eineDOMExceptionvom TypIndexSizeError. Negative Zahlen werden in große vorzeichenlose Werte umgewandelt oder führen ebenfalls zum Fehler – prüfe Eingaben deshalb vorher. - CSS hat Vorrang: Eine per CSS gesetzte
widthüberschreibt die aussizeberechnete Breite. Für eine zeichenbasierte Breite per CSS bietet sichwidth: 10chan. - Ungenau bei Proportionalschrift: Die Breite beruht auf einer durchschnittlichen Zeichenbreite; breite Zeichen wie „W“ passen oft nicht vollständig hinein.
- Nicht verwechseln mit
HTMLSelectElement.size: Dort bedeutetsizedie Anzahl sichtbarer Zeilen, und der Standardwert ist0. - Browserunterstützung: seit jeher in allen Browsern vorhanden.