Formular - Checkbox-Auswahl prüfen

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

  • Formular - Checkbox-Auswahl prüfen

    Hallo,

    ich habe eine Formular, welches ich auf Eingaben prüfe. Bei Text- und Auswahlfeldern ist dies klar. Nun möchte ich überprüfen, ob zumindest 1 Box der 3 Checkboxen angeklickt wurde. Mein bisheriger Ansatz mit der If-Bedingung habe ich unten aufgeführt, jedoch möchte ich nicht die einzelnen Boxes auf Auswahl überprüfen, sondern es reicht zu prüfen ob überhaupt eine Box angeklickt ist, falls nicht kommt die Meldung bitte Auswahl treffen, falls mindestens eine Box engeklickt wurde, kommt keine Meldung. Hat hier jemand eine Idee.

    <input type=checkbox name="Befeuerungsart[]" value="Oel">Oel</input>
    <input type=checkbox name="Befeuerungsart[]" value="Gas">Gas</input>
    <input type=checkbox name="Befeuerungsart[]" value="Elektro">Elektro</input>


    for(i=0; i<Befeuerungsart.length; i++) {

    if( document.objektdaten.Befeuerungsart[i].checked == false) {
    alert("Sie haben keine Auswahl getroffen");
    document.objektdaten.Befeuerungsart.focus();
    return false
    }

  • #2
    1. du kannst das Element so nicht ansprechen, da der Name des Elements nicht "Befeuerungsart" sondern "Befeuerungsart[]" => getElelementByName ist dein Freund

    2. wenn es dir reicht dass mindestens ein Element gecheckt ist, dann musst du einen Flag zur Hilfe nehmen und den Flag in der For-Schleife auf true setzen, falls checked und sofort die for-Schleife abrechen. Nach dem die For-Schleife verlassen wurde, prüfst du das Flag und reagiere entsprechend.

    Kommentar


    • #3
      verstehe ich nun nicht so ganz, mit der Angabe von [] deklariere ich doch Befeuerungsart als Array, wobei der Name der Array-Variable Befeuerungsart ist - oder ??

      dein zweiter Punkt würde mich interessieren

      dann musst du einen Flag zur Hilfe nehmen und den Flag in der For-Schleife auf true setzen, falls checked und sofort die for-Schleife abrechen. Nach dem die For-Schleife verlassen wurde, prüfst du das Flag und reagiere entsprechend.
      Könntest du mir dies noch etwas näher erklären?

      Kommentar


      • #4
        1. probiere einfach
        2.
        PHP-Code:

        flag
        =false;
        for (...) {
           if (...) {
               
        flag=true;
                break;
            }
        }
        if (!
        flag) { 
           
        alert(...);
            return 
        false
        }
        return 
        true

        Kommentar


        • #5
          Hallo,

          mühsam habe ich nun herausbekommen , daß der Name in Javascript Befeuerungsart[] ist und nicht Befeuerungsart.

          Mit nachfolgendem Code bekomme ich nun zwar die Meldung, daß keine Befeuerungsart ausgewählt wurde, jedoch auch dann, wenn alle checkboxes angeklickt sind. Das heißt irgendwas stimmt noch nicht mit der For-Schleife, da die flag-Variable nicht auf true gesetzt wird. An was könnte dies liegen?

          var flag=false;
          for (i=0; i<document.getElementsByName("Befeuerungsart[]")[i].length; i++) {
          if (document.getElementsByName("Befeuerungsart[]")[i].checked == true) {
          var flag=true;
          break;
          }
          }

          if (!flag) {
          alert("Sie haben keine Befeuerungsart ausgewählt");
          document.getElementByName("Befeuerungsart[]")[0].focus();
          return false
          }

          Kommentar


          • #6
            Original geschrieben von Ralf
            Hallo,

            mühsam habe ich nun herausbekommen , daß der Name in Javascript Befeuerungsart[] ist und nicht Befeuerungsart.
            DU hast selbst heraus gefunden alles klar. Dann machst mal selbst alleine weiter

            Kommentar


            • #7
              das war eher ironisch gemeint, nach dem Motto hätte ich doch gleich auf deinen Rat gehört, dann wäre mir einiges erspart geblieben. Bitte nicht falsch verstehen, bin für deine Hilfe überaus dankbar.

              Kommentar


              • #8
                so funktionierts nun:

                var flag=false;
                for (i=0; i<document.getElementsByName("Befeuerungsart[]").length; i++) {
                if (document.getElementsByName("Befeuerungsart[]")[i].checked == true) {
                flag=true;
                break;
                }
                }
                if (!flag) {
                alert("Sie haben keine Befeuerungsart ausgewählt");
                document.getElementsByName("Befeuerungsart[]")[0].focus();
                return false
                }

                an asp2php: ich hoffe du nimmst mir das nicht noch übel, war bestimmt nicht absichtlich, war nur eine ungeschickte Formulierung

                Kommentar


                • #9
                  Na bitte, geht doch ...

                  kein Problem, ich habs vielleicht nicht so richtig verstanden ... ich Ausländer

                  Kommentar

                  Lädt...
                  X