1unitedpower: preventDefault() nach Ajax request

Beitrag lesen

'<input class="button" id="submit_'.$value.'" type="submit" onclick="submit('.$value.')"/>'
document.getElementById("submit_"+key).addEventListener("click",  function(event){
  event.preventDefault()
});

Ja, so sieht es gerade aus, wenn ich kein Fehler beim tippen gemacht habe. Habe ich einen gar schrecklichen Denkfehler?

Ganz schönes Gefrickel. Ich habe die zwei in Konflikt stehenden Codestellen mal direkt gegenüber gestellt. Die Default-Aktion des Buttons wäre das Absenden des Formulars. Zusätzlich zu dieser Default-Aktion verpasst du dem Button aber auch noch die benutzerdefinierte Aktion onclick="submit('.$value.')". Ich vermute mal, dass die Funktion submit auch das Formular absenden wird. Das heißt, du unterdrückst vielleicht erfolgreich die Default-Aktion, aber nicht deine benutzerdefinierte Funktion, die im Prinzip das gleiche macht.

Vorschlag zur Güte: Räume erstmal auf. JavaScript mit PHP zu generieren ist eine ganz schlechte Idee, das macht es unglaublich schwierig vorherzusehen, wie das Programm reagiert. Und Event-Handler im HTML zu notieren, ist aus ähnlichen Gründen ein stilistisches No-Go. Besser wäre du registrierst alle Event-Handler aus deinem JavaScript heraus und benutzt Event-Delegation, um mit den dynamisch nachgeladenen Buttons zu interagieren. In der Forensuche dürftest du auf einige gute Beiträge zu dem Thema stoßen, sehr zu empfehlen sind zum Beispiel die von @Orlok.