Sven Rautenberg: Problem mit confirm und Radio-Button

Beitrag lesen

Moin!

So ganz versteh ich's noch nicht. Kann ich dem benutzer nun den Wert ("ja" oder "nein") anzeigen lassen oder nicht?

Wenn du es richtig machst, geht es natürlich. Aber es ist nicht so einfach, wie du denkst.

Zunächst mal:

  

> return confirm('Bitte überprüfe nochmals:\nNewsletter erhalten: '+phpform.Newsletter_erhalten.value+'')  

Dein Formular enthält ZWEI Formularelemente mit dem Namen "Newsletter_erhalten". Deshalb existiert nicht nur ein simples "phpform.Newsletter_erhalten", sondern an dieser Stelle existiert ein Array, welches alle beiden Formularelemente dieses Namens ansteuern kann. Das Array beginnt bei 0, die Reihenfolge orientiert sich an der Reihenfolge im HTML-Quelltext.

Mit anderen Worten: Du hast "phpform.Newsletter_erhalten[0]" und "phpform.Newsletter_erhalten[1]".

Jedes dieser zwei Elemente enthält eine Eigenschaft "checked", welche dir angibt, ob der Radiobutton gedrückt wurde, und außerdem eine Eigenschaft "value", welche dir den Value-Wert des Radiobuttons angibt.

Um herauszufinden, welcher Value an dein PHP-Skript übermittelt wird, mußt du sämtliche (in diesem Fall nur die existierenden zwei) Radiobuttons desselben Namens darauf prüfen, ob ihre "checked"-Eigenschaft true ist. Bei dem Button, wo das der Fall ist, kannst du dann die Value-Eigenschaft ausgeben lassen, denn genau diese wird auch an PHP geliefert.

Wesentlich einfacher wäre es übrigens, wenn du statt der Radiobuttons eine einfache Checkbox verwenden würdest. :) Und es ergibt aus Sicht des Anwenders auch viel mehr Sinn, denn eine Checkbox ist exakt das zu verwendende Bedienelement, wenn es darum geht, einen binären Zustand "an/aus" bzw. "ja/nein" eingeben zu lassen. Radiobuttons sind dann anzuwenden, wenn es mehr als zwei Zustände gibt, von denen sich der Benutzer exakt EINEN aussuchen kann, also beispielsweise "ja/nein/weiß nicht" (was für die Bestellung eines Newsletters natürlich absolut sinnlos wäre ;) ).

- Sven Rautenberg

--
My sssignature, my preciousssss!