molily: Event einfügen

Beitrag lesen

<form onsubmit="return speichern()">

jetzt soll eine Methode in das Ereignis "submit"  mit addEventListenter/attachEvent  eingetragen werden, die VOR dem Ereignis "speichern" ausgeführt wird.

Wenn du mit traditionellem Event-Handling und Inline-JavaScript arbeitest, kannst du diesen Handler nicht mit addEventListener/attachEvent überschreiben oder einen Handler registrieren, der vorher ausgeführt wird.

Am besten wäre natürlich, wenn du auf Event-Handler-Attribute verzichtest und sämtliche Handler mit addEventListener/attachEvent registrierst.

So kannst du folgendes machen: Speichere den bestehenden submit-Handler (das ist ein Funktionsobjekt), lösche ihn und registriere einen neuen mit addEventListener, welcher den alten aufruft.

var f = document.getElementById('form');  
var oldHandler = f.onsubmit;  
f.onsubmit = null;  
f.addEventListener('submit', function (e) {  
   // mach was,  
   // dann rufe alten Handler auf  
   if (oldHandler) {  
      return oldHandler.call(this, e);  
   }  
}, false);

call() wird hier verwendet, damit this im Handler auf das korrekte Element zeigt, zudem wird das Event-Objekt übergeben. Ansonsten würde return oldHandler() ausreichen.

Mathias