FireFox kann auf AJAX generiertes Formular nicht zugreifen

chris4712

Erfahrenes Mitglied
Hey!

Habe hier ein Formular, genauer eine Liste von Artikeln mit einer CheckBox pro Artikel zum selektieren, das via AJAX aktualisiert wird. Sobald dies geschehen ist kann der FireFox nicht mehr auf die Elemente des Formulars zugreifen

Das schaut so aus:
Code:
<div id="List">
 <div id="BillOutput">
  <table>
  <form method="POST" name="Bill">
   <tbody>
    <tr>
     <td><input type="checkbox" name="Article[]" value="218" id="218" onClick="ShowSum(Bill, 'Article[]', '1')" /></td>
     <td><label for="218">00:01</label></td>
     <td><label for="218">Artikel</label></td>
     <td style="text-align: right"><label for="218">1.99€</label></td>
    </tr>
   </tbody>
  </table>
 </div>
 <div id="Info">
  <input type="button" value="Auswahl stornieren" onClick="if(confirm('Sollen die gewählten Artikel wirklich storniert werden?')) Storno(Bill, 'Article[]', '1'); else return false;" />
 </div>
 </form>
</div>



Wenn nun ein Artikel selektiert wurde, soll irgendwas damit gemacht werden. Funktioniert soweit auch.


Hier mein eine Beispielfunktion:
Code:
function Storno(form, pattern, Table) {

  // Testfunktion ob auf die Elemente des Formulars zugegriffen werden kann
  if (form.elements.length == 0)
    alert('Neu laden');

  var ret = '';
  for(var i=0; i<form.elements.length; i++) {
    if(form.elements[i].name == pattern && form.elements[i].checked) {
      ret += form.elements[i].value+',';
    }
  }
    request.open("POST", "functions/ArtikelStornieren.php", false);
    request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    request.send("Article=" + escape(ret));

    // Wenn das Script fertig ist
    request.onReadyStateChange = ShowBill(Table)
}

Sobald ich nun das Formular via AJAX neu Lade (document.getElementById('List').innerHTML = ....) geschieht dies auch, aber die Funktionen können beim FireFox nicht mehr auf das Formular zugreifen. Die Testfunktion (unterster Code Block, Zeile 3-5) springt also an.
Aber nur beim FireFox.

Warum ist dies so? Ich übergebe doch eigentlich in der Variable "form" immer das aktuelle Formular?!

Viele Grüße!
 
Du übergibst nur den Namen "Bill". Ich würde hier eher auf eine eindeutige Objektzuordnung anhand einer ID setzen.

Ansonsten: kann man sich das auch irgendwo anschauen?

Und: hast Du schonmal im Firebug geschaut welche Funktion wann und wo greift?
 
Hey!

Okay, auch wenn ich statt dem Namen die ID übergebe klappt es im FireFox nicht :(
Man kann sich das anschauen. Ich schick dir gleich mal per PM den Link usw. Muss ja nicht grade jede Suchmaschine sehen :D

Firebug schweigt. Also sagt zumindest dass alles OK sei
 
Firebug sagt das natürlich. Aber Du kannst dort auch prima debuggen wo dein JavaScript lang geht wenn es ausgeführt wird, welche Werte es wo hat - hast Du das schonmal gemacht?
 
Hey!

Ja, hab ich auch: Sobald der Bereich via AJAX neu geladen wurde, ist "Bill" leer.

Damit alle anderen auch mal schauen können: http://www.stuhl-web.com/demo

Der Fehler äußert sich so:
Wenn beim Start der Seite schon was in der Tabelle vorhanden ist, könnt ihr dies "bearbeiten". Z.B. vorne auf die CheckBox klicken und der Preis ändert sich unten.
Wenn ihr nun einen Artikel hinzufügt wird die Liste neu geladen.
Nun klickt noch mal in die CheckBoxen. Weder der Preis unten wird geändert, und auch die beiden anderen Buttons (stornieren und buchen) sind ohne Funktion.


Dies liegt daran dass beim neu laden die Variable Bill keine Daten des Formulars enthält.
Selbst wenn ich statt Bill this.form.elements schreibe, oder einfach mal "alert(thos.form.elements.length) kommt nichts bzw. 0?!

Bin echt am Verzweifeln warum der FireFox so doof ist. Oder eben ich :)
 
Keiner ne Idee?!
Ihr habt euch ja noch nicht mal das Beispiel angeschaut :( Sind immer noch die Demo Werte von der Einrichtung drin.....
 
Ich frag' mich so oder so, ob dass überhaupt funktionieren kann, da du den Namen des Formulars nicht in Anführungszeichen übergibst. Momentan ist er nur eine Variable ohne Inhalt.
 

Neue Beiträge

Zurück