Was passiert mit dem Wert einer Radio-Button-Gruppe beim Absenden eines Formulars, wenn keine Option ausgewählt wurde?
Wenn bei einer Radio-Button-Gruppe keine Option ausgewählt wurde, passiert beim Absenden des Formulars Folgendes:
Der Wert wird überhaupt nicht übertragen.
Hier sind die Details dazu, was das für die Praxis bedeutet:
1. Technisches Verhalten (HTTP-Request)
In der Datenübertragung (egal ob per GET oder POST) taucht der Name (name-Attribut) der Radio-Button-Gruppe schlichtweg nicht auf.
- Beispiel mit Auswahl: Wenn du eine Gruppe namens
farbehast und „Blau“ wählst, sendet der Browser:farbe=blau. - Beispiel ohne Auswahl: Der Browser sendet in Bezug auf dieses Feld gar nichts. Es gibt kein
farbe=, sondern der Parameter fehlt komplett in der Liste der gesendeten Daten.
2. Unterschied zu anderen Feldern
Das unterscheidet Radio-Buttons von Textfeldern:
- Ein leeres Textfeld sendet seinen Namen mit einem leeren Wert (
vorname=). - Eine nicht gewählte Radio-Button-Gruppe verhält sich wie eine nicht angehakte Checkbox: Sie wird ignoriert.
3. Auswirkungen auf die Serverseite (Backend)
Da der Schlüssel gar nicht existiert, müssen Programmierer dies im Code abfangen, um Fehler zu vermeiden:
- PHP:
$_POST['name']wäre nicht definiert. Ein Zugriff darauf würde eine "Undefined Index"-Notiz auslösen. Man muss mitisset($_POST['name'])prüfen. - JavaScript (FormData):
formData.get('name')würdenullzurückgeben.
Empfehlungen zur Vermeidung dieses Zustands
Da Radio-Buttons per Definition eine „1 aus n“-Auswahl erzwingen sollen, gibt es zwei gängige Lösungen, um leere Werte zu verhindern:
- Ein Standardwert (Default): Setze bei einem der Radio-Buttons das Attribut
checked. So ist immer ein Wert vorhanden.<input type="radio" name="farbe" value="rot" checked> Rot - Das
required-Attribut: Wenn du kein Feld vorselektieren möchtest, füge das Attributrequiredhinzu. Der Browser verhindert dann das Absenden des Formulars, bis eine Auswahl getroffen wurde.<input type="radio" name="farbe" value="rot" required> <input type="radio" name="farbe" value="blau">
Zusammenfassend: Wenn keine Option gewählt ist, existiert der Wert für den Server nicht – er ist nicht „leer“, sondern „abwesend“.