Nicki: Function funzt nicht

Hallo,

ich könnte da mal nen Tipp gebrauchen. Javascript ist für mich noch zienliches Neuland.

Ich möchte einen 'Button' auf Disable setzen, sobald KEINE der dargestellten Checkboxen auf checked gesetzt ist/wird. Sobald der User eine beliebige Checkbox aktiviert, soll der Button 'frei' werden.
Ich habe bisher folgendes ausprobiert, was aber nicht funktioniert:
[...
<script type="text/javascript">
function Disab()
         {
         frm=document.forms[0]
         if(frm.cbox.checked)
         {frm.Button1.disabled=true}
         else {frm.Button1.disabled=false}
         }
</script>

</head>
<body>

<form name="Test" action="">

<input type="checkbox" name="zutat" value="brockoli" onclick=Disab()> Brockoli<br>
<input type="checkbox" name="zutat" value="Mais" onclick=Disab()> Mais<br>
<input type="checkbox" name="zutat" value="Tunfisch" onclick=Disab()> Tunfisch<br>
<input type="checkbox" name="zutat" value="pilze" onclick=Disab()> Pilze<br>
<input type="checkbox" name="zutat" value="sardellen" onclick=Disab()> Sardellen
 <hr>
 <input type="button" name="button1" value="weiter" disabled>
</form>

</body></html>

</html>
...]

Bitte nicht in all zu 'Fachchinesisch' ;)

Danke

  1. Liebe(r) Nicki,

    "funzt nicht" funzt nicht.

    Ich möchte einen 'Button' auf Disable setzen, sobald KEINE der dargestellten Checkboxen auf checked gesetzt ist/wird. Sobald der User eine beliebige Checkbox aktiviert, soll der Button 'frei' werden.

    Du willst also _alle_ Checkboxen überprüfen? OK, dann tu das doch.

    frm=document.forms[0]

    Benutze "lokale" Variablen. Warum das besser ist, führt hier zu weit. Schreibe daher "var" vor Deine Variablendeklaration.

    if(frm.cbox.checked)

    Was prüfst Du hier? Was ist "cbox"? Und inwieweit hast Du damit _alle_ Checkboxen überprüft?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. Noch was stilistisches.
    Mal angenommen es gäbe frm.cbox.checked (dazu siehe den Beitrag von Felix), dann ist das ein boolscher Wert.
    Du kannst dann das hier

    if(frm.cbox.checked)
             {frm.Button1.disabled=true}
             else {frm.Button1.disabled=false}

    lesbarer schreiben als
    frm.Button1.disabled = frm.cbox.checked;

    Übrigens, dein Beispiel setzt disabled dann, wenn checked zutrifft. Laut deiner Beschreibung willst du das eigentlich andersrum.

    1. Lieber Encoder,

      lesbarer schreiben als
      frm.Button1.disabled = frm.cbox.checked;

      ja, aber...

      Übrigens, dein Beispiel setzt disabled dann, wenn checked zutrifft. Laut deiner Beschreibung willst du das eigentlich andersrum.

      ... er will etwas _völlig_ _anderes_, als das, was er prüft.

      Selbst eine Negation erfüllt nicht das, was eigentlich erreicht werden soll:
      frm.Button1.disabled = !frm.cbox.checked;

      Alle Codebeispiele kümmern sich nur um _eine_ (momentan nicht vorhandene) Checkbox. Er will aber alle Checkboxen prüfen. Und dazu bedarf es einer Schleife.

      Liebe Grüße,

      Felix Riesterer.

      --
      ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
      1. Ja du hast schon recht, das komplette Beispiel passt nicht ganz zur Frage. Das hast du ja schon geklärt.
        Ich wollte nur ein paar Nebensächlichkeiten ergänzen die mir aufgefallen sind, unabhängig von der eigentlichen Aufgabe.
        Der Fragesteller möge das doch bitte beachten, wenn er meine Antwort liest.

  3. @@Nicki:

    nuqneH

    <input type="button" name="button1" value="weiter" disabled>

    Das ist wohl keine gute Idee, den Button im Markup (HTML) auf "disabled" zu setzen; dein Formular wäre ohne JavaScript nicht funktionsfähig.

    Nimm das raus; setze "disabled" mit JavaScript!

    Qapla'

    --
    Volumen einer Pizza mit Radius z und Dicke a: pi z z a
  4. Hallo, ich nochmal,

    habe mich jetzt seit ein paar Stunden mit Javascript auseinander gesetzt und habe nun folgende Herausforderung:

    Ich möchte mittels einer Checkbox eine "<select>" auf disabled bzw. nicht disabled setzen. Standardmäßig soll es auf disabled stehen.

    Ich habe es soweit geschaft, dass man die <select> frei bekommt.
    Wenn man den Haken aber nun wieder weg nimmt, sollte sie auch wieder auf disable gesetzt werden . Das geht allerdings mit folgendem Beispiel nicht:

    [..
    function disab(chk){
    var fs = document.getElementById('disab_' + chk.id);
    if (fs.disabled=false)
       {fs.disabled=true}
    else{fs.disabled=false}
    }
    ...
    <input type="checkbox" name="box" value="ja" id="1" onclick="disab(this);">
    <br>
    <select id="disab_1" name="test"><option>1</option><option>2</option></select>
    ..]

    Kann mir da nochmal jemand einen Tipp geben?

    Vielen Dank

    Nicki

    1. Hi,

      if (fs.disabled=false)

      Kann mir da nochmal jemand einen Tipp geben?

      Ja - lerne den Vergleichsoperator kennen, und vor allem ihn vom Zuweisungsoperator zu unterscheiden.

      MfG ChrisB

      --
      “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    2. Liebe(r) Nicki,

      warum hattest Du es nicht nötig, auf die bisherigen Hilfsangebote auch nur irgendwie zu reagieren? Glaubst Du im Ernst, dass ich Dir bei Deinem zweiten Post jetzt überhaupt noch helfen will?

      Liebe Grüße,

      Felix Riesterer.

      --
      ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)