Hallo,
<form ... name="myform" onsubmit="return validieren();">
funktioniert das wunderbar, das Formular wird validiert und im Fehlerfall die Standardaktion unterdrückt.
Das sind DOM 0 Events (ich nenne es »traditionelles« Event-Handling in meiner Doku).
Verwende ich jedoch (Quelle: molily)
[code lang=javascript]function addEvent (obj, type, fn)
{
if (obj.addEventListener)
{
obj.addEventListener(type, fn, false);
Das ist W3C DOM Events.
}
else if (obj.attachEvent)
{
obj.attachEvent('on' + type, function () {return fn.call(obj, window.event);});
Das ist Microsoft-proprietärer Kram gepaart mit einem Kompatibilitätsfix für den Zugriff auf das Event-Objekt und das verarbeitende Element.
Du verwendest hier also drei verschiedene Modelle. Die unterscheiden sich in zahlreichen Punkten, nicht nur in der Art und Weise, wie man Handler registiert und deregistriert:
- Event-Phasen (Capturing, Target-Phase, Bubbling)
- Zugriff auf das Event-Objekt
- Zugriff auf das verarbeitende Element und das Zielelement
- Zugriff auf die gedrückten Tasten, Maustasten
- uvm.
Diese primitive addEvent-Helferfunktion verwendet immmerhin noch zwei verschiedene Modelle und nivelliert *nur zwei Unterschiede* zwischen diesen.
Deswegen braucht man schnell eine ausgereiftere addEvent-Funktion:
http://molily.de/js/event-handling-fortgeschritten.html#flexibles-addevent
Beim komplexen Event-Handling (Tastatur, Maus, Event Delegation, tausend weitere Vereinheitlichungen) braucht man schließlich eine ausgereifte Event-Handling-Bibliothek:
http://molily.de/js/event-handling-fortgeschritten.html#addevent-frameworks
Mathias