Javascript Checkbox prüfen

The_Answer1985

Erfahrenes Mitglied
Hallo zusammen,

hab zwei Checkboxen, die geprüft werden. Wird die eine ausgewählt, soll die andere automatisch nicht ausgewählt sein und umgekehrt.

Also klickt man, z.B. auf "Ja" ist "Nein" nicht ausgewählt.
Dafür verwende ich folgendes Skript:

Code:
function pruefeCB(){

    if(document.forms[0].elements[2].checked){
        document.forms[0].elements[3].checked = false;
    }else if(document.forms[0].elements[3].checked){
        document.forms[0].elements[2].checked = false;
    }
}

Wird 'Nein' gewählt, so wird 'Ja' automatisch auf "checked=false" gesetzt. Wenn ich will kann ich aber auf 'Ja' klicken und 'Nein' wird auf false gesetzt.

Ist jetzt aber 'Ja' gewählt, dann kann ich nicht mehr auf 'Nein' klicken. Damit ich 'Nein' klicken kann, muss ich die Auswahl für 'Ja' zuerst per Hand wieder rückgängig machen.

Woran liegt das, jemand eine Idee?

danke für eure Hilfe.

Liebe Grüße
 
Anstatt beide Boxen abzufragen, ob sie gecheckt sind, prüfe nur die angeklickte:
Code:
<script type="text/javascript">
<!--
function pruefeCB(o,t)
{
    if(o.checked){o.form.elements[t].checked = false;}
}
//-->
</script>
</head>
<body>
<form>
<input type="hidden"><input type="hidden">
<input type="checkbox" onclick="pruefeCB(this,3)">
<input type="checkbox" onclick="pruefeCB(this,2)">
</form>
Warum?
klickst du die 2.Box an, wird zuerst die 1.Box geprüft...und wenn diese gecheckt ist, wars das dann halt...in den else-Abzweig kommt deine Funktion dann überhaupt nicht mehr.

Komfortabler würde dies natürlich mit Radio-Buttons gehen :)
 
Hi,

also das klappt ja wunderbar, dankeschön! Klar würde es mit RadioButtons einfacher gehn, aber ich will das so ;)

Aber ich habe trotzdem noch zwei Fragen:

- wozu
Code:
<input type="hidden">
?
- was genau übergibst du als parameter beim methodenaufruf?

Danke für deine Hilfe,

liebe Grüße!
 
Wenn ich mich kurz einbinden dürfte, das macht er da er das 3. oder 2. Kindelement prüfen möchte.

also

Code:
<form>
     <input type="hidden"></input> // erstes Kind
     <input type="hidden"></input> // zweites Kind
     <input type="checkbox"></input> // drittes Kind
     <input type="checkbox"></input> // viertes Kind
</form>

Da er aber das 3. Kind und 4. Kind überprüft , setzt er noch 2 Inputfelder davor die versteckt werden , wobei bei 0 begonnen wird zu zählen. form.elements[2] gibt einen den 3. Kindknoten raus.

Kannst auch weglassen musst dann halt 0 und 1 überprüfen jeweils.
 
Jo...Fips hats erfasst, wozu die Dummies da sind :)

Die Parameter sind
1. immer this(Zeiger auf die auslösende Box)
2. Index der anderen Box in der elements-Auflistung
 
Zurück