JS - Bezeichnerproblem

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

  • JS - Bezeichnerproblem

    Gegeben:

    <input type="checkbox" name="blub[]" value="1">
    <input type="checkbox" name="blub[]" value="2">

    Frage:
    Wie greife ich per JS auf eine Checkbox mit diesem Namen zu? Die eckigen Klammern müssen ja sein, damit ich das ganze dann weiterverarbeiten kann... Und die elements[x]-Syntax möchte ich nicht verwenden, weil sie mir zu unflexibel ist...

    CAT Music Files

  • #2
    Hi,

    um Missverständisse vorzubeugen, die Syntax der D.O.M

    function chkfkt(){

    var wert= document.'formname'.'elementname'.value;
    // bzw
    var wert= document.form(x).element(y).value;


    }
    kennst du?!
    Yuppi, endlich Elite ...

    Kommentar


    • #3
      Hmmm... nein.
      Aber:

      PHP-Code:
      Syntax error while loading (line 29)
        if (
      document.forms[0].'username'
      -----------------------------------^ 
      Oder hab ich dich falsch verstanden...?

      CAT Music Files

      Kommentar


      • #4
        Beispiel:

        <form name="testform" ...>
        <input type="checkbox" name="blub" value="1" onClick="chkfkt()">

        ...


        var wert = document.testform.blub.value;
        // oder
        var wert = form.bulb.value;
        // oder
        for (x=1;x<=10;x++){
        if(document.form[0].blub[x].checked){
        // mach irgendwas für name="bulb[x]"
        }
        }

        Aber nicht Index-Schreibweise mit Namesspezifikation mischen

        [Editiert von Blaster am 11-03-2002 um 22:17]
        Yuppi, endlich Elite ...

        Kommentar


        • #5
          Aber ich muss die eckigen Klammern doch verwenden, damit ich dann im Formhandler (PHP) das ganze als Array verarbeiten kann.

          CAT Music Files

          Kommentar


          • #6
            Hm... keine Chance..?

            CAT Music Files

            Kommentar


            • #7
              Ja, mußt Du. Aber mann kommt trotzdem dran, ohne die genaue Position zu wissen; Du mußt einfach nur danach suchen.
              Um den Aufwand dabei zu verringern, gat das Objeckt document seit im IE und NN seit Version 6 die Methode getElementsByName.

              In älteren Browsern kannst du Dir mit folgender Funktion behelfen. Die listet nur alle Checkboxen mit dem Namen und dem Status (checked oder nicht) auf; anpassen an deine Bedürfnisse mußt du selbst:
              [code]
              function ListCheckboxes(formname, checkname)
              {
              var s = formname+'.'+checkname+':';
              ar = eval ('document.'+formname+'.elements);
              for (i=0; i<ar.length; i++)
              {
              el = ar[i];
              if (el.name==checkname)
              s += '\n'+(el.checked ? 'x ':'o ')+el.value;
              }
              alert (s);
              }
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #8
                Dann nehme ich letzteres

                Danke vielmals!

                CAT Music Files

                Kommentar


                • #9
                  Was dabei heraus gekommen ist, falls es jemanden interessiert:

                  Code:
                  function ListCheckboxes(formname, checkname)
                  {
                    atleast_one_checked = false;
                    ar = eval('document.'+formname+'.elements');
                    for (i=0; i<ar.length; i++)
                    {
                      el = ar[i];
                      if (el.name==checkname) {
                       if (el.checked) atleast_one_checked = true;
                      }
                    }
                    if (atleast_one_checked) {
                      return true;
                    } else {
                      return false;
                    }
                  }

                  CAT Music Files

                  Kommentar


                  • #10
                    und als letztes i-tüpfelchen würde ich noch folgende änderung vorschlagen:

                    Code:
                    function ListCheckboxes(formname, checkname)
                    {
                      atleast_one_checked = false;
                      ar = eval('document.'+formname+'.elements');
                      for (i=0; i<ar.length; i++)
                      {
                        el = ar[ i ];
                        if (el.name==checkname) {
                          if (el.checked)[b]
                          {
                            atleast_one_checked = true;
                            break;
                          }[/b]
                        }
                      }
                      if (atleast_one_checked) {
                        return true;
                      } else {
                        return false;
                      }
                    }
                    damit wird deine schleife dann beendet, sobald ein gechecktes feld gefunden wurde.
                    bringt bei der menge an formularfeldern die man im normalfall so hat einen irren performance-gewinn ;-)

                    [Editiert von wahsaga am 14-03-2002 um 13:49]
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar

                    Lädt...
                    X