Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] [JS] Mehrere Array-Checkboxen abfragen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] [JS] Mehrere Array-Checkboxen abfragen

    Code:
    <input type=checkbox name=test[] value=1> 1
    <input type=checkbox name=test[] value=2> 2
    <input type=checkbox name=test[] value=3> 3
    Das Array $test wird dann im PHP-Script ausgelesen.

    Aber wie frage ich vorher mit JS ab, ob test[] überhaupt ausgefüllt wurde?

    if(document.bestellung.test && document.bestellung.test.value=='') bringt nichts...

    if(document.bestellung.test[] && document.bestellung.test[].value=='') bringt eine Syntaxfehlermeldung...


  • #2
    Code:
    if(document.bestellung.elements["test"] && document.bestellung.elements["test"].value == "")
    Dürfte funktionieren. Wenn nicht einfach melden.

    Kommentar


    • #3
      Hm, wird leider ignoriert... aber die Abfrage ob überhaupt ein Feld namens "test" existiert, müßte doch so lauten oder:

      if(document.bestellung.test && document.bestellung.elements['test'].value=='')

      Ich denk mal wenn die Optionsfelder mit "test" und nicht "test[]" benannt werden, würde es funktionieren...

      Kommentar


      • #4
        Du kannst auch noch

        "document.bestellung.elements['test[]'].value"

        probieren. Bei mir hats bis jetzt immer so funktioniert.

        Kommentar


        • #5
          Okay mal verkürzt:

          if(document.bestellung.elements['test'].value=='') wird ignoriert
          if(document.bestellung.elements['test[]'].value=='') wird ignoriert

          Muss man das Element ev. anders abfragen? Also nicht value oder sowas?

          Kommentar


          • #6
            Muss man das Element ev. anders abfragen? Also nicht value oder sowas?
            hab mir jetzt nicht genau angesehen, was du machen willst, aber ich denke du suchst checked (value hast du ja schließlich gesetzt und kann sich gar nicht ändern)

            also z.b.: if(document.forms[0].elements[1].checked == true)

            Kommentar


            • #7
              Ja das kommt schön näher und klingt auch logisch...

              Ich kann allerdings nicht alle Elemente einzeln abfragen,
              es sollte halt nur geprüft werden ob irgendeins von test[]
              angeklickt ist...

              Kommentar


              • #8
                dazu hab ich auch mal ne frage, die in dieselbe richtung geht.
                ich lese werte aus einer DB aus, welche in ein formular übergeben werden. dieses formular wird mittels while-schleife erzeugt, bis keine einträge mehr in der DB sind .. ein formular-feld sieht dann zb. so aus:
                PHP-Code:
                <?php
                echo '<td><input name="Name[',$id,']" type="text" size="15" maxlength="100" value="',$name_db,'"></td>';
                ?>
                hinter jeder zeile gibt es den button "ändern". und beim draufklicken, soll erstmal geprüft werden, ob die geänderten bzw. gelöschten felder korrekt sind.

                das funktioniert auch mit auslesen in php auf der nächsten seite, aber ich hab ein problem bei der javascript abfrage .. in meiner funktion steht folgendes:
                Code:
                if (document.Nutzerverwaltung.elements['Name[]'].value == "")
                  {
                    alert("Bitte geben Sie einen Wert in das Feld \"Name\" ein.");
                    document.Nutzerverwaltung.Name[].focus();
                    return (false);
                  }
                das wird aber komplett ignoriert. aufgerufen wird die funktion im kopf des formulars
                Code:
                onsubmit="return testform()"



                für antworten bin ich dankbar

                Kommentar


                • #9
                  Zitat von Truncate
                  Ich kann allerdings nicht alle Elemente einzeln abfragen
                  das musst du aber wohl denke ich mal, z.b. so:
                  PHP-Code:
                  <?js
                  function is_checked(cbe) {
                    for (i = 0; i < cbe.length; i++)
                      if (cbe[i].checked) {
                        /* tue etwas */
                        break;
                      }
                  }
                  ?>
                  is_checked() einfach so aufrufen is_checked(document.forms[0].elements['test[]'])

                  P.S.: vielleicht gibt es auch eine funktion wie in_array() => mal bei selfhtml nachsehen!

                  @Anne: auch hier ist das problem wohl, dass du ein bestimmtes element aus name auswählen musst, am besten an die funktion einen parameter z.b id übergeben und dann name[id] abprüfen

                  Kommentar


                  • #10
                    danke für die antwort, aber das funzt nicht. hatte ich auch schon probiert. oder ich hab's falsch gemacht .. bin nicht so der javascript-freak. parameter-übergabe würd ich mal so machen
                    .. onsubmit="return testform($id)" .. oder ohne das PHP-Variablen-Zeichen?

                    und dann ... testform(id)
                    if (Nutzerverwaltung.elements['Name[id]'].value == "")

                    wär das richtig so?? kann's grad leider nicht direkt ausprobieren...

                    Kommentar


                    • #11
                      if (Nutzerverwaltung.elements['Name[]'][id].value == "")

                      wenn du das ganze natürlich per onSubmit machst, musst du natürlich auch eine schleife verwenden (ich nehme mal an du hast nur ein formular?)
                      was sollen denn dann die ganzen 'ändern'-Buttons, würde es da einer nicht auch tun

                      Kommentar


                      • #12
                        nee. brauch schon mehrere buttons ... mach das nicht für mich und daher ist es vorgabe.
                        pro tabellenzeile steh ein DB-Eintrag, der geändert werden kann ..

                        ich probier das ganze dann mal aus udn meld mich, wenn'S nicht weitergeht :wink:

                        Kommentar


                        • #13
                          domhtml (in diesem Fall getElementsByName) kümmert sich nicht um die eckigen Klammern im Namen.

                          Code:
                          <html>
                          	<head>
                          		<script type="text/javascript">
                          			function showChecked(nameSrc) {
                          				sOut = "checked:";
                          				collSrc = document.getElementsByName(nameSrc);
                          							
                          				if (collSrc!=null) {
                          					for(i=0;i<collSrc.length;i++) {
                          						if (collSrc[i].checked==true) {
                          							sOut += collSrc[i].value + " ";
                          						}
                          					}
                          				}
                          				alert(sOut);
                          			}
                          		</script>
                          	</head>
                          	<body>
                          		<input type="checkbox" name="test[]" value="1">1</option>
                          		<input type="checkbox" name="test[]" value="2">2</option>
                          		<input type="checkbox" name="test[]" value="3">3</option>
                          		<button onclick="javascript:showChecked('test[]')>klick mich</button>
                          	</body>
                          </html>

                          Kommentar

                          Lädt...
                          X