[JavaScript] Checkbox überprüfen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] Checkbox überprüfen

    Guten Abend zusammen,

    mit JavaScript möchte ich überprüfen, ob bestimmte Checkboxen aktiviert sind.

    Code:
    <form method="post" name="att" action="att.php" onSubmit="return AttFormularPruefen()">  
    
    ...
    
    <input type="checkbox" name="angreifen[]" value="<? echo $data['BurgID']; ?>">
    So mein Problem ist nun, wie ich die Checkbox(en) überprüfen kann, da

    Code:
    <SCRIPT language="JavaScript" type="text/javascript">
    <!--
    function AttFormularPruefen(){
    
    if(document.att.angreifen[].checked == false) {
       alert("Bitte Burgen, die angreifen sollen, auswählen!");
       return false;
      }
    }
    nicht funktioniert. Mir ist klar, dass angreifen[] hier nur ein Array ist - also wie muss der Code nun richtig lauten?

    Für jegliche Hilfe, danke im Voraus.

    Ciao
    Boron


    edit: hab eben erst gesehen, dass sich in meinem Code ein kleiner Schönheitsfehler (ein fehlendes ">) eingeschlichen hatte. tut aber nicht zur Sache....
    Zuletzt geändert von Boron; 22.02.2005, 10:08.

  • #2
    So sollte es gehen:
    Code:
    for (i=0;i<anzahldeinercheckboxen;i++)
    {
       if(document.att.angreifen[i].checked == false) {
          alert("Bitte Burgen, die angreifen sollen, auswählen!");
          return false;
         }
    }
    einfach in 'ner for-schleife alle checkboxen überprüfen.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Geht nicht.

      Ich habe spaßenshalber mal

      Code:
      for (i=0;i<10;i++)
      und

      Code:
      for (i=0;i<999;i++)
      probiert.... ging beide Male nicht.

      Das Problem ist auch, dass die Anzahl der Checkboxen aus einer DB generiert wird (kommt auf die Anzahl der BurgIDs an) - also möchte ich da auch ungern einen festen Wert eintragen.

      Kommentar


      • #4
        such mal nach getElementsByName

        Kommentar


        • #5
          Code:
          for(var i=0;i<document.getElementsByName("angreifen[]").length;i++) {
             if(document.getElementsByName("angreifen[]")[i].checked == false) {
                alert("Bitte Burgen, die angreifen sollen, auswählen!");
                return false;
             }
           }
          -> jetzt muss ich aber (wegen der FOR-Schleife) alle Checkboxen aktiviert haben, wenn keine Meldung kommen soll...... ich möchte aber, dass nur _mindestens eine_ angeklickt ist.

          Aber ganz ohne For-Schleife, also:

          Code:
          var i=document.getElementsByName("angreifen[]").length
             if(document.getElementsByName("angreifen[]")[i].checked == false) {
                alert("Bitte Burgen, die angreifen sollen, auswählen!");
                return false;
             }
          geht nicht.

          Wie muss ich den Code also umbauen?

          Kommentar


          • #6
            geh doch einfach alle Checkboxen durch und lass dir die Anzahl der angeklickten zurückliefern. Ist die Anzahl goß genug dann hast du keine Probleme.
            it's not a bug,
            it's a feature!

            Kommentar


            • #7
              Original geschrieben von Boron
              Code:
              for(var i=0;i<document.getElementsByName("angreifen[]").length;i++) {
                 if(document.getElementsByName("angreifen[]")[i].checked == false) {
              *argh!*

              bitte getElementsBy... nicht so exzessiv nutzen - das "kostet" jedes mal.
              und bei length ebenso.

              lieber so:
              Code:
              var angreifen = document.getElementsByName("angreifen[]");
              var laenge = angreifen.length;
              
              for(var i=0; i<laenge; i++) {
                 if(angreifen[i].checked ...)
              -> jetzt muss ich aber (wegen der FOR-Schleife) alle Checkboxen aktiviert haben, wenn keine Meldung kommen soll...... ich möchte aber, dass nur _mindestens eine_ angeklickt ist.
              tja, dann denk bitte mal kurz nach, wie man sowas wohl lösen könnte ...

              Code:
              var keineAngekreuzt = true;
              
              for(...) {
                 if(checkbox i angekreuzt) {
                    keineAngekreuzt = false;
                    break;
                 }
              }
              
              if(keineAngekreuzt) {
                 alert("keine angekreuzt");
              }
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Code:
                for(var i=0;i<document.getElementsByName("angreifen[]").length;i++) {
                   if(document.getElementsByName("angreifen[]")[i].checked == true) {
                      var angreifenangeklickt=1;
                  }
                 }
                 
                if(angreifenangeklickt!=1) {
                      alert("Bitte Burgen, die angreifen sollen, auswählen!");
                      return false;
                 }
                geht!

                Und wie war das jetzt mit [FONT=arial]getElementsByName[/FONT] nicht so oft nutzen? Soll ich da jetzt noch was umbauen?

                edit:

                Na gut, hab's jetzt ma zu

                Code:
                var angreifen = document.getElementsByName("angreifen[]");
                var laenge = angreifen.length;
                
                for(var i=0;i<laenge;i++) {
                   if(angreifen[i].checked == true) {
                      var angreifenangeklickt=1;
                  }
                 }
                 
                if(angreifenangeklickt!=1) {
                      alert("Bitte Burgen, die angreifen sollen, auswählen!");
                      return false;
                 }
                umgestaltet.

                Vielen Dank an alle!
                Zuletzt geändert von Boron; 22.02.2005, 10:57.

                Kommentar


                • #9
                  Original geschrieben von Boron
                  geht!
                  schön - jetzt fehlt eigentlich nur noch das break, um die for-schleife beim "finden" der ersten angeklickten checkbox zu verlassen - denn sie weiter laufen zu lassen, und alle übrigen auch noch abzuklappern, macht ja wenig sinn.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Richtig.

                    Worauf man nicht alles achten muss.....

                    Also so schaut's jetzt aus:

                    Code:
                    var angreifen = document.getElementsByName("angreifen[]");
                    var angreifenlaenge = angreifen.length;
                    
                    for(var i=0;i<angreifenlaenge;i++) {
                       if(angreifen[i].checked == true) {
                          var angreifengeklickt=1;
                          break;
                      }
                     }
                     
                    if(angreifengeklickt!=1) {
                          alert("Bitte Burgen, die angreifen sollen, auswählen!");
                          return false;
                     }
                    Aber mittlerweile habe ich (als JavaScript-Neuling) ein neues Problem, das ebenfalls Checkboxen betrifft.... hier geht's weiter

                    Kommentar

                    Lädt...
                    X