Announcement

Collapse
No announcement yet.

TextFeld-Array ansprechen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TextFeld-Array ansprechen

    Hallo,

    Sicher bin ich mir nicht, ob dieses nicht doch die falsche Kategorie ist, um nach folgendem Problem eine Lösung zu finden:

    Ich versuche eine JavaScript Funktion auf dynamische erzeugte Textfelder und Checkboxen (beides HTML) zu parametrisieren.

    JavaScript:
    Code:
      function toogleTextField(objCheckbox, objTextfeld){
        objTextfeld.disabled = (objCheckbox.checked) ? false : true;
      }
    Dynamische Anzahl von Boxen und Feldern:
    PHP Code:
    <?php
                $numRows 
    mysql_num_rows($PQRY);
                for(
    $i 0;$i<=$numRows-1$i++){
                    
    $row mysql_fetch_row($PQRY);
    //[.....]
                    
    echo" <td><input type='checkbox' name='artikel[]' value='".$row[0]."' onclick='toogleTextField(this, this.form.anzahl[".$i."]);'></td>";
                    echo
    " <td><input type='text' name='anzahl[]' value=''/></td>";


    //[.....]
                
    }
            
    ?>
    Kann mir jemand dabei helfen oder es in die richtige Kategorie verschieben?
    Firebug meldet: "this.form.anzahl is undefined"

  • #2
    schau dir das erzeugt HTML an. Deine Javascript Funktion erwartet zwei Objekte. Bekommen tut sie vermutlich Text
    Christian

    Comment


    • #3
      Hallo SebastianB,

      der Zugriff auf ein Element über den Namen ist bei "Array-Elementen" nicht so ohne weiteres möglich. Du mußt hier den Umweg über die elements-Kollektion des form-Objektes gehen:
      PHP Code:
      ...onclick='toogleTextField(this, this.form.elements[\"anzahl[]\"][".$i."]);'>... 
      Generell würde ich jedoch den Zugriff auf das DOM mittels eindeutiger ID empfehlen.
      z.B.:
      PHP Code:
      ...
      echo
      " <td><input type='checkbox' name='artikel[]' value='".$row[0]."'
        onclick=\"toogleTextField(this, document.getElementById('anzahl_
      $i'));\"></td>";
      echo
      " <td><input id=\"anzahl_$i\" type='text' name='anzahl[]' value=''/></td>";
      ... 
      Gruß Falk

      P.S.: Attributwerte von HTML-Tags werden immer in doppelte Hochkommas gesetzt und nicht in einfache. Also z.B.: <input type="checkbox" statt: <input type='checkbox'! Das bedeutet bei einer Ausgabe mittels echo in PHP zwar mehr Aufwand - da man jeweils mit \ quotieren muß - aber die Mühe sollte man sich machen.
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Originally posted by Falk Prüfer View Post
        Hallo SebastianB,

        der Zugriff auf ein Element über den Namen ist bei "Array-Elementen" nicht so ohne weiteres möglich. Du mußt hier den Umweg über die elements-Kollektion des form-Objektes gehen:
        PHP Code:
        ...onclick='toogleTextField(this, this.form.elements[\"anzahl[]\"][".$i."]);'>... 
        Generell würde ich jedoch den Zugriff auf das DOM mittels eindeutiger ID empfehlen.
        z.B.:
        PHP Code:
        ...
        echo
        " <td><input type='checkbox' name='artikel[]' value='".$row[0]."'
          onclick=\"toogleTextField(this, document.getElementById('anzahl_
        $i'));\"></td>";
        echo
        " <td><input id=\"anzahl_$i\" type='text' name='anzahl[]' value=''/></td>";
        ... 
        Gruß Falk

        P.S.: Attributwerte von HTML-Tags werden immer in doppelte Hochkommas gesetzt und nicht in einfache. Also z.B.: <input type="checkbox" statt: <input type='checkbox'! Das bedeutet bei einer Ausgabe mittels echo in PHP zwar mehr Aufwand - da man jeweils mit \ quotieren muß - aber die Mühe sollte man sich machen.

        Hallo!

        Ich habe es wie in deinem ersten Beispiel gelöst, denn damit konnte ich die Variable einfacher in die Session abspeichern.
        Vielen Dank für deine super Hilfe.

        Comment


        • #5
          Originally posted by Falk Prüfer View Post
          der Zugriff auf ein Element über den Namen ist bei "Array-Elementen" nicht so ohne weiteres möglich. Du mußt hier den Umweg über die elements-Kollektion des form-Objektes gehen:
          PHP Code:
          ...onclick='toogleTextField(this, this.form.elements[\"anzahl[]\"][".$i."]);'>... 
          Generell würde ich jedoch den Zugriff auf das DOM mittels eindeutiger ID empfehlen.
          wieso? elements ist Abwärtskompatibel.

          Man könnte den Code auch leserlicher machen:
          HTML Code:
          <input type='checkbox' 
          name='artikel[]' value='".$row[0]."' 
          onclick='toogleTextField(this, this.form.anzahl[this.value]);'>

          Originally posted by Falk Prüfer View Post
          P.S.: Attributwerte von HTML-Tags werden immer in doppelte Hochkommas gesetzt und nicht in einfache.
          Nein, http://www.w3.org/TR/REC-html40/intr...t.html#h-3.2.2

          Comment

          Working...
          X