Heiko : Event einfügen

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

  1. 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

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. <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

    1. 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.