Was passiert mit dem Wert einer Radio-Button-Gruppe beim Absenden eines Formulars, wenn keine Option ausgewählt wurde?

Melden

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 farbe hast 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 mit isset($_POST['name']) prüfen.
  • JavaScript (FormData): formData.get('name') würde null zurü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:

  1. 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
  2. Das required-Attribut: Wenn du kein Feld vorselektieren möchtest, füge das Attribut required hinzu. 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“.

0