Formularfelder leeren

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

  • Formularfelder leeren

    Hi,

    ich schreibe grade an einem Formular das sich per JavaScript erweitern lässt. Sprich: Man hat eine Tabelle und kann durch das betätigen eines Buttons eine weitere Zeile hinzufügen.

    Ich habe dafür eine allgemeingültige Funktion geschrieben, damit ich sie auch für andere Tabellen verwenden kann.


    PHP-Code:
    function add_row(btntbody_idmax_rows){

        var 
    tbody document.getElementById(tbody_id);
        var 
    trs tbody.getElementsByTagName('tr');

        if(
    trs.length max_rows){

            var 
    new_tr trs[0].cloneNode(true);

            var 
    inputs new_tr.getElementsByTagName('input');
            for(
    0inputs.lengthi++){
                if(
    inputs[i].type == 'text'){
                    
    inputs[i].value '';
                }
            }

            var 
    selects new_tr.getElementsByTagName('select');
            for(
    0selects.lengthi++){
                
    selects[i].value '';
            }

            
    tbody.appendChild(new_tr);
        }

        if(
    trs.length == max_rows){
            
    backup_btn[tbody_id] = btn.cloneNode(true);
            
    btn.parentNode.removeChild(btn);
        }


    Die Funktion nimmt sich einfach die erste TR im TBODY, cloned diesen , leert INPUT und SELECT Felder und hängt die TR hinten wieder ran.
    Klappt auch alles wunderbar - auch beim neu erfassen von Daten.

    Möchte ich nun aber Daten bearbeiten, gibt es ein Problem.
    Ich habe beispielsweise 2 Zeilen meiner Tabelle mit Daten gefüllt. Wenn ich nun meinen Knopf drücke (die Funktion ausführe) und in die neue Zeile andere Daten eintrage, tauchen diese nicht im POST-Array auf. Schau ich mir nun mit nem FirefoxPlugin den vom JS generierten Quelltext an, sind die value's der neu hinzugekommenen Zeile nicht leer, obwohl sie im Formular leer sind.

    Hier mal Beispielhaft wie das aussieht.
    PHP-Code:
    <table>
      <
    tbody>
        <
    tr>
          <
    td><input type="text" name="foo[]" value="bar" />
        </
    tr> <!-- diese Zeile kommt aus der DB -->
        <
    tr>
          <
    td><input type="text" name="foo[]" value="bar" />
        </
    tr> <!-- diese Zeile wird durch add_row generiert -->
      </
    tbody>
    </
    table
    Im Browser sind alle Input-Felder der neuen Zeile leer (!).


    Hat von euch einer ne Idee, woran es liegen könnte? Thnx.


    EDIT:
    Hab grad noch mal ein wenig getestet - Im IE7 funktioniert das ganze - nur Firefox übernimmt die Felder von der ersten Zeile und macht sie nicht leer.
    Zuletzt geändert von prego; 06.02.2007, 12:15.

  • #2
    Hab jetzt grad nochmal ein wenig probiert.

    Firefox überträgt einfach nicht die per JS hinzugefügten TR's mit den dazugehörigen Input Feldern. Der $_POST-Array hat nur die Zeilen die auch beim Laden der Seite schon vorhanden waren.

    Ich setze jetzt noch defaultValue auf '' - wobei es daran nicht zu liegen scheint.

    IE7 überträgt den kompletten Array, mit den per JS hinzu gekommenen Werten.

    Hat jemand von euch vielleicht noch ne Idee?

    Kommentar


    • #3
      Ok, gelöst...

      grml.

      Das Formular hat 3 DIV's in sich - nur war es aber so, das das erste DIV innerhalb der FORM's angefangen hat, aber das Dritte ausserhalb des FORM's geschlossen wurde.

      Grml - Also: Verschachtelungs Fehler.

      Kommentar

      Lädt...
      X