Event einfügen
Heiko
- javascript
Moin Allerseits,
Beispiel:
<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.
hat jemand hierfür eine Idee?
mfg
Heiko
Hi,
Beispiel:
<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.
</archiv/2009/3/t184303/#m1221915>
Sollte sich für den submit-Event analog machen lassen.
MfG ChrisB
<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
Hallo Mathias, hallo ChrisB
vielen Dank für eure Hinweise.
Der Tip von Mathias ist der richtige. Zwischenzeitlich bin ich zur
richtigen Lösung gekommen. Die schaut ähnlich der von Mathias aus.
Hintergrund ist ein Script, das die kommenden HTML5 - Attribute
"placeholder , required und autofocus" bei älteren Browsern berücksichtigt.
Nun klappt es, Danke.