Drei Radiobuttons prüfen
Icebaer
- javascript
Ich suche ein Script, um zu ermitteln, ob einer von drei Radiobuttons angeklickt wurde.
Erfolglos sind:
function checkForm()
//====== Prueft Radiobuttons ======Variante 1 --- geht net...
{
if(document.mitglied.elements[0].checked == false && document.mitglied.elements[1].checked == false && document.mitglied.elements[2].checked == false)
{
alert (" Wählen Sie bitte die Mitgliederart aus. ");
document.mitglied.elements[0].focus();
return false
}
//====== Prueft Radiobuttons ======Variante 2 --- geht auch net...
{
if(document.mitglied.elements[0].checked == true || document.mitglied.elements[1].checked == true || document.mitglied.elements[2].checked == true)
{return true;}
else
{
alert (" Wählen Sie bitte die Mitgliederart aus. ");
return false;
}
Ich bin am verzweifeln!!
Danke für die Hilfe ;-)
Hallo
vielleicht kannst du dir hir das passende nehmen.
http://grassegger.at/gitter.at/index2.php
Wenn du ein Modell auswählst und dann 3 Checkboxen anklicken versuchst...
HTH
Werner
Hi,
Ich suche ein Script, um zu ermitteln, ob einer von drei Radiobuttons angeklickt wurde.
Du musst alle Buttons ueberpruefen - am Besten in einer Schleife - und im Erfolgsfalle einen "Merker" setzen. Anschliessend erfolgt die gewuenschte Reaktion.
Ich bin am verzweifeln!!
Nicht doch, Script anbei, flog hier noch rum...
Gruesse Joachim
<html>
<head>
<script language="javascript1.2" type="text/javascript">
function go() {
// flag merkt sich Wert oder bleibt false
var flag = false;
// Schleife laeuft ueber Radio-Array und prueft jeden Button
for (var i = 0; i < document.dpl.rd.length; i++) {
if (document.dpl.rd[i].checked) flag = document.dpl.rd[i].value;
}
if (flag) alert (flag);
else alert ("nix");
}
</script>
</head>
<body>
<form Name="dpl">
<input type="radio" name="rd" value="1">
<input type="radio" name="rd" value="2">
<input type="radio" name="rd" value="3">
<input type="button" value="go" onclick="go()">
</form>
</body>
</html>
Ein paar kleine Optimierungen:
<html>
<head>
Den DOCTYPE hast du nur vergessen, oder?
<script language="javascript1.2" type="text/javascript">
wozu javascript1.2? Das skript sollte sogar mit Netscape 2 laufen.
function go() {
Einfacher ist es die Formular referenz direkt zu übergeben:
HTML:
<input type="button" value="go" onclick="go(this.form)">
function go(form) {
spart eine Menge Tipparbeit.
// flag merkt sich Wert oder bleibt false
var flag = false;
// Schleife laeuft ueber Radio-Array und prueft jeden Button
for (var i = 0; i < document.dpl.rd.length; i++) {
if (document.dpl.rd[i].checked) flag = document.dpl.rd[i].value;
Wenn's eine Radiogroup ist gibt es eh nur ein angeklicktes Kästchen:
if(!form.rd[i].checked) continue;
flag = form.rd[i].value;
break;
}
if (flag) alert (flag);
else alert ("nix");
}
</script>
Struppi.
Hallo
Du musst alle Buttons ueberpruefen - am Besten in einer Schleife - und im Erfolgsfalle einen "Merker" setzen. Anschliessend erfolgt die gewuenschte Reaktion.
Ich habe dein Script eingebaut, aber irgendwo scheint noch was nicht zu stimmen...geht dieser Script nicht mit "function checkForm()"?Ich prüfe drum noch anderer Felder...
Findest du den Fehler?
<SCRIPT LANGUAGE="JavaScript">
function checkForm()
{
var flag = false;
// Schleife laeuft ueber Radio-Array und prueft jeden Button
for (var i = 0; i < document.mitglied.typ.length; i++) {
if (document.mitglied.typ[i].checked) flag = document.mitglied.typ[i].value;
}
if (flag) alert (flag);
else alert ("nix");
}
.
.
.
//dann werden andere Felder geprüft, zB.
if(document.mitglied.vorname.value=="")
{
alert ("Bitte Vornamen eingeben");
document.mitglied.vorname.focus();
return false;
}
.
.
.
td><input type="radio" name="typ" value="einzel">
Einzelmitglied</td>
<td><input type="radio" name="typ" value="familie">
Familie</td>
<td><input type="radio" name="typ" value="verein_firma">
Verein / Firma<br>
.
.
.
<input type="submit" name="MOSubmit" value="anmelden"
onclick="return checkForm()"
Danke für die Geduld mit mir ;-)
gruss
Icebaer
//====== Prueft Radiobuttons ======Variante 1 --- geht net...
//====== Prueft Radiobuttons ======Variante 2 --- geht auch net...
"geht net" ist keine Fehlerbeschreibung mit der jemand was anfangen kann. Mit Mozilla kommt eine Javascript Konsole die dir sehr detaliert Fehlermeldungen ausgibt, darüber hinaus solltest du testen ob die Objekte die du verwenden möchtest existieren und beim entwickeln dir die Werte evtl. ausgeben lassen.
Z.b.
if(document.mitglied)
{
.... Das Formular existiert ....
}
else
{
Fehler das Formular existiert nicht.
}
aber das was du anbietest reicht nicht um dir wirklich zu helfen.
Struppi.
"geht net" ist keine Fehlerbeschreibung mit der jemand was anfangen kann...
da hast du recht!
also das script fragt die radiobuttons ab, bemerkt, dass kein Button angeklickt ist, die Meldung "Wählen Sie Bitte..." erscheint.
Wenn ich dann einen Button anklicke und wieder auf den "submit" klicke, erscheint wieder wählen sie bitte...". Ich bin also in einer Endlosschleife.
Was ist überhaut gescheiter:
if(...checked == false && ...checked == false) --> return false
oder
if(...checked == true || ...checked == true) --> return true
else
...darüber hinaus solltest du testen ob die Objekte die du verwenden möchtest existieren und beim entwickeln dir die Werte evtl. ausgeben lassen.
Hab ich soweit ich das beurteilen kann schon geprüft.
Hier die Angaben zum Form,
die Radios sind element 0, 1, 2
<form action="mailopen1.php" method="post" name="mitglied" id="mitglied">
<td><input type="radio" name="typ" value="einzel">
Einzelmitglied</td>
<td><input type="radio" name="typ" value="familie">
Familie</td>
<td><input type="radio" name="typ" value="verein_firma">
Verein / Firma<br>
und hier noch die Angaben zum "submit":
<input type="submit" name="MOSubmit" value="anmelden"
onclick="return checkForm()"
Was ist überhaut gescheiter:
if(...checked == false && ...checked == false) --> return falseoder
if(...checked == true || ...checked == true) --> return true
else
letztlich egal.
...darüber hinaus solltest du testen ob die Objekte die du verwenden möchtest existieren und beim entwickeln dir die Werte evtl. ausgeben lassen.
Hab ich soweit ich das beurteilen kann schon geprüft.
Hier die Angaben zum Form,
die Radios sind element 0, 1, 2
Nee, hast du nicht.
wo ist if(document.mitglied) .... if(document.mitglied.elements)
<form action="mailopen1.php" method="post" name="mitglied" id="mitglied">
<td><input type="radio" name="typ" value="einzel">
Einzelmitglied</td>
<td><input type="radio" name="typ" value="familie">
Familie</td>
<td><input type="radio" name="typ" value="verein_firma">
Verein / Firma<br>und hier noch die Angaben zum "submit":
<input type="submit" name="MOSubmit" value="anmelden"
onclick="return checkForm()"
und hier kannst du es dir einfacher machen:
<input type="submit" name="MOSubmit" value="anmelden"
onclick="return checkForm(this.form)">
besser noch im form Tag:
<form action="mailopen1.php" method="post" name="mitglied" id="mitglied"
onsubmit="return checkForm(this);">
function checkForm(form)
{
und hier hast du dann:
form => das Formular
form.typ => deine Radiogroup (mit der Eigenschaft length)
Also testen:
if(!form && !form.type) return confirm('Es trat ein Fehler auf');
und dann alle Typen durchlaufen:
for(var i = 0; form.typ[i]; i++) if(form.typ[i].checked) return true;
return false;
Struppi.