Radiobutton aktivieren wenn Checkbox checked
Tina
- javascript
Hallo,
da ich leider des Programmierens nicht mächtig bin, erbitte ich Hilfe bei folgendem Problem:
In meinem Formular sollen
meine 3 Radiobuttons nur aktiviert sein, wenn die Checkbox angehakt wurde.
(Es gibt im Formular auch noch andere Radiobuttons und eine weitere Checkbox, falls diese Info nötig ist).
Ich hab leider wirklich keine Ahnung, kann mir jemand helfen?
Danke
Tina
hi,
In meinem Formular sollen meine 3 Radiobuttons nur aktiviert sein, wenn die Checkbox angehakt wurde.
drei radiobuttons gleichzeitig angekreuzt?
oder meinst du "aktiviert" im sinne von "einer von ihnen auswählbar"?
Ich hab leider wirklich keine Ahnung, kann mir jemand helfen?
natürlich, http://de.selfhtml.org/javascript/ hilft doch auch einsteigern gerne weiter.
beschäftige dich zunächst damit, wie man formularelemente anspricht.
vermutlich wirst du für deine radiobuttons in abhängigkeit vom zustand der checkbox (änderung dieser mit dem eventhandler onChange abfangen) die eigenschaft disabled auf true oder false setzen wollen.
gruß,
wahsaga
drei radiobuttons gleichzeitig angekreuzt?
oder meinst du "aktiviert" im sinne von "einer von ihnen auswählbar"?
Genau! Man soll erst auswählen können, wenn die Checkbox angeklickt wurde.
Mittlerweile klappt es mit einem Button.
<!--
function check(checkbox, Essen1) {
if(checkbox.checked==true){
Essen1.disabled = false;
}
else {
Essen1.disabled = true;
}
}
//-->
Aber wie kann ich mehrere Radiobuttons ansprechen?
Genau! Man soll erst auswählen können, wenn die Checkbox angeklickt wurde.
Mittlerweile klappt es mit einem Button.
<!--
function check(checkbox, Essen1) {
if(checkbox.checked==true){
Essen1.disabled = false;
}
else {
Essen1.disabled = true;
}
Das läßt sich wesentlich einfacher formulieren
Essen1.disabled = !checkbox.checked;
}
//-->Aber wie kann ich mehrere Radiobuttons ansprechen?
Gleichnamige Elemente werden wie ein Array angesprochen. Genau wie es in dem Beispiel bei selfhtml auch passiert
http://de.selfhtml.org/javascript/objekte/elements.htm#checked
Struppi.
Genau! Man soll erst auswählen können, wenn die Checkbox angeklickt wurde.
Das läßt sich wesentlich einfacher formulieren
Essen1.disabled = !checkbox.checked;
Hatte das nur irgendwo "geklaut", da ich mich wie gesagt noch nicht mit JavaScript beschäftigt habe.
Aber wie kann ich mehrere Radiobuttons ansprechen?
Gleichnamige Elemente werden wie ein Array angesprochen. Genau wie es in dem Beispiel bei selfhtml auch passiert
http://de.selfhtml.org/javascript/objekte/elements.htm#checked
Danke für den Link. Ich hatte es mit dem selben Namen für alle Buttons schon ausprobiert. Funktionierte leider nicht.
Danke für den Link. Ich hatte es mit dem selben Namen für alle Buttons schon ausprobiert. Funktionierte leider nicht.
Mir ist kein Browser bekannt, der JS kann, wo es nicht funktioniert
Struppi.
<script type="text/javascript" >
<!--
function check(checkbox, Essen) {
if(checkbox.checked==true){
Essen.disabled = false;
}
else {
Essen.disabled = true;
}
}
//-->
</script>
+++ weiter unten dann... +++
<tr>
<td colspan="2" nowrap class="form">
<input type="checkbox" name="Abendveranstaltung" value="Ja" onClick="check(this, document.anmeldung.Essen)" id="fp1"><label for="fp1"> Abendveranstaltung (20 €)</label>
<input type="radio" name="Essen" value="Gruenkohl" disabled> Grünkohl
<input type="radio" name="Essen" value="Schnitzel" disabled> Schnitzel
<input type="radio" name="Essen" value="Vegetarisch" disabled> Vegetarisch
</td>
</tr>
Also SO funktioniert es jedenfalls nicht!
Also SO funktioniert es jedenfalls nicht!
Klar, aber da ist auch nirgends ein Veränderung zu deinem 1. Code oder die umsetzung des Beispiels aus selfhtml.
Struppi.
Also SO funktioniert es jedenfalls nicht!
Klar, aber da ist auch nirgends ein Veränderung zu deinem 1. Code oder die umsetzung des Beispiels aus selfhtml.
Struppi.
Danke, sehr "hilfreich".
hi,
Danke, sehr "hilfreich".
wenn du jetzt anfängst, so herumzustänkern, ärgert es mich schon fast wieder, dir anfänglich überhaupt tipps gegeben zu haben :-/
schau dir doch bitte das von Struppi verlinkte beispiel bei selfhtml genauer an; und zwar insbesondere, was dort gemacht wird, um auf einen speziellen von mehreren gleich benannten buttons zuzugreifen.
gruß,
wahsaga
schau dir doch bitte das von Struppi verlinkte beispiel bei selfhtml genauer an; und zwar insbesondere, was dort gemacht wird, um auf einen speziellen von mehreren gleich benannten buttons zuzugreifen.
Beispiel aus selfhtml:
<html><head><title>Test</title>
<script type="text/javascript">
function Weiter () {
if (document.Testform.Art[0].checked == true) {
window.location.href = "frmdatei.htm";
} else if (document.Testform.Art[1].checked == true) {
window.location.href = "datei.htm";
} else {
alert("Bitte eine Auswahl treffen");
}
}
</script>
</head><body>
<form name="Testform" action="">
<input type="radio" name="Art" value="mit"> mit Frames
<input type="radio" name="Art" value="ohne"> ohne Frames
<br><input type="button" value="Starten" onClick="Weiter()">
</form>
</body></html>
Versteh ich so:
Es gibt zwei Radio-Buttons. Beide haben den selben name="Art". Welcher von beiden angeklickt wurde, ergibt sich aus der [Zahl]. Dann wird entsprechend die eine oder andere Datei angezeigt.
Mein Problem:
<script type="text/javascript" >
<!--
function check(checkbox, Essen) {
if(checkbox.checked==true){
Essen.disabled = false;
}
else {
Essen.disabled = true;
}
}
//-->
</script>
+++ weiter unten dann... +++
<tr>
<td colspan="2" nowrap class="form">
<input type="checkbox" name="Abendveranstaltung" value="Ja" onClick="check(this, document.anmeldung.Essen)" id="fp1"><label for="fp1"> Abendveranstaltung (20 €)</label>
<input type="radio" name="Essen" value="Gruenkohl" disabled> Grünkohl
<input type="radio" name="Essen" value="Schnitzel" disabled> Schnitzel
<input type="radio" name="Essen" value="Vegetarisch" disabled> Vegetarisch
</td>
</tr>
Wenn die Checkbox angeklickt wird, sollen alle drei Buttons von disabled auf aktiviert gesetzt werden.
Ich dachte, es würde funktionieren, wenn alle den gleichen namen=Essen haben.
Meine Kollegin hat es jetzt für mich so gelöst.
<!--
function check(checkbox, Essen1,Essen2,Essen3) {
if(checkbox.checked==true){
Essen1.disabled = false;
Essen2.disabled = false;
Essen3.disabled = false;
}
else {
Essen1.disabled = true;
Essen2.disabled = true;
Essen3.disabled = true;
}
}
//-->
</script>
weiter unten...
<tr>
<td colspan="2" nowrap class="form">
<input type="checkbox" name="Abendveranstaltung" value="Ja"
onClick="check(this, document.anmeldung.Essen1,document.anmeldung.Essen2,document.anmeldung.Essen3)" id="fp1">
<label for="fp1"> Abendveranstaltung (20 €)</label>
<input type="radio" name="Essen" id="Essen1" value="Gruenkohl" disabled> Grünkohl
<input type="radio" name="Essen" id="Essen2" value="Schnitzel" disabled> Schnitzel
<input type="radio" name="Essen" id="Essen3" value="Vegetarisch" disabled> Vegetarisch
</td>
</tr>
(Nur, falls jemand auch mal das Problem hat...)
Gruß
Tina
Versteh ich so:
Es gibt zwei Radio-Buttons. Beide haben den selben name="Art". Welcher von beiden angeklickt wurde, ergibt sich aus der [Zahl]. Dann wird entsprechend die eine oder andere Datei angezeigt.Mein Problem:
<script type="text/javascript" >
<!--
function check(checkbox, Essen) {
if(checkbox.checked==true){
Essen.disabled = false;
}
else {
Essen.disabled = true;
}
}
//-->
Es gibt in deinem ersten Beispiel zwei Button mit dem Namen Essen und du musst nichts weiter machen wie genau das Beispiel aus selfhtml 1:1 übertragen:
Essen[0].disabled = false;
oder
Essen[1].disabled = false;
</script>
+++ weiter unten dann... +++
<tr>
<td colspan="2" nowrap class="form">
<input type="checkbox" name="Abendveranstaltung" value="Ja" onClick="check(this, document.anmeldung.Essen)" id="fp1"><label for="fp1"> Abendveranstaltung (20 €)</label>
Das läßt sich noch verallgemeinern:
<input type="checkbox"
name="Abendveranstaltung" value="Ja"
onclick="check(this, this.form.Essen)" >
Wenn die Checkbox angeklickt wird, sollen alle drei Buttons von disabled auf aktiviert gesetzt werden.
Ich dachte, es würde funktionieren, wenn alle den gleichen namen=Essen haben.
Fast richtig, du hast nur das Beispiel in selfhtml nicht verstanden.
Meine Kollegin hat es jetzt für mich so gelöst.
Hat sie nicht, die Lösung solte nicht funktioneren, in welchem Browser geht das?
Essen ist ein Array (oder genauer eine Collection) von Elementen, dass heißt du musst diese auch so ansprechen.
function check(checkbox, Essen) {
for(var i = 0; i < Essen.length; i++)
{
Essen[i].disabled = !checkbox.checked
}
}
(Nur, falls jemand auch mal das Problem hat...)
Wird er es so wie du es gemacht hast nicht lösen. Aber wie gesagt das steht alles genau so in selfhtml.
Struppi.
Fast richtig, du hast nur das Beispiel in selfhtml nicht verstanden.
Nö, aber anscheinend bist du auch nicht bereit, es mir zu erklären.
Meine Kollegin hat es jetzt für mich so gelöst.
Hat sie nicht, die Lösung solte nicht funktioneren, in welchem Browser geht das?
Also bei mir funktioniert es mit IE.
auch mal das Problem hat...)
Wird er es so wie du es gemacht hast nicht lösen. Aber wie gesagt das steht alles genau so in selfhtml.
Tja, manche Leute sind halt nicht so intellent wie du.
Für mich ist die Lösung jedenfalls ausreichend.
Weiterhin viel Spaß beim schulmeistern.
Hallo Tina
Fast richtig, du hast nur das Beispiel in selfhtml nicht verstanden.
Nö, aber anscheinend bist du auch nicht bereit, es mir zu erklären.
Natürlich bin ich, nur du hast irgendwie gar nichts gemacht und zweimal das Gleiche geschrieben trotz Hinweise und Tipps, was erwartest du?
Meine Kollegin hat es jetzt für mich so gelöst.
Hat sie nicht, die Lösung solte nicht funktioneren, in welchem Browser geht das?
Also bei mir funktioniert es mit IE.
Naja, du hast auch nicht gesagt dass das nur bei dir funktioneren soll.
auch mal das Problem hat...)
Wird er es so wie du es gemacht hast nicht lösen. Aber wie gesagt das steht alles genau so in selfhtml.
Tja, manche Leute sind halt nicht so intellent wie du.
Für mich ist die Lösung jedenfalls ausreichend.Weiterhin viel Spaß beim schulmeistern.
Was soll dass denn?
Du hast mehrere Hinweise bekommen wie du dein Problem umsetzt und von dir kam nichts - null
Offensichtlich erwartest du das andere für dich das Problem lösen (wie deine Kollegin), dann bist du im falschen Forum (du hast sicher die Einleitung ganz oben gelesen) und wenn du halt nicht intelligent genug bist (wie du selber schreibst) dann muss das jemand anders für dich machen, kein Problem.
Aber dein Problem war so offensichtlich und mit dem Beispiel in selfhtml fast 1:1 lösbar, dass ich und andere sich wundern was da nicht zu verstehen war, da du aber auf nichts eingegangen bist und nur rumgejammert hast, war dir einfach nicht zu helfen. Aber dann dein eigenes Unvermögen mit so einem dummen Spruch zu kaschieren ist dann natürlich nur konsequent.
und Tschüß!
Struppi.