na gut, dann setzte ich es eben so um
Die for-Attribute in den label-Elementen sollten sich immer auf die id eines Radiobuttons beziehen. Alternativ kann ein label-Element auch das Eingabefeld, das dazu gehört, umschließen.
Du musst dein Markup auch nochmal auf Fehler überprüfen. Ein Formular kann nicht einfach inmitten zwischen zwei <td>-Elementen geöffnet werden.
Jedes Produkt in deiner Liste braucht übrigens eine eigene Gruppe Radiobuttons. Die Gruppenzugehörigkeit wird über das name-Attribut der Radiobuttons festgemacht. Du kannst die Radiobuttons also nicht bei jeder Produkt wieder "preis" nennen. Die Gruppen müssen sich unterscheiden, das kannst du zum beispiel über einen numerischen Index machen, etwa so:
<input name="preis[1]" type="radio" value="42">
<input name="preis[1]" type="radio" value="1337">
Und die nächste Gruppe hat einen Index von 2:
<input name="preis[2]" type="radio" value="42">
<input name="preis[2]" type="radio" value="1337">
Aber hat das jetzt ein Vor- bzw. Nachteil?
Vorteile:
- Das Formular funktioniert nun auch in Browsern mit deaktiviertem JavaScript.
- Du kannst die Constraint-Validation des Browser benutzen. Du kannst also mit dem required- Attribut festlegen, dass eine Gruppe-Radiobuttons ein Pflichtfeld ist.
- Deutlich weniger Aufwand.
Nachteile: