00willson: Eventhandling auch für JavaScript gesteuerte Events?

Guten Abend.

Eine Frage zum Thema Event-Listener:
ich möchte das submit-Event überwachen. Springt der Listener auch für JavaScript-gesteuertes Absenden via ".submit()" an? Oder beschränkt er sich auf die submit-Option des Formulars?

Vielen Dank vorab & einen schönen Abend

  1. Hi,

    Eine Frage zum Thema Event-Listener:
    ich möchte das submit-Event überwachen. Springt der Listener auch für JavaScript-gesteuertes Absenden via ".submit()" an? Oder beschränkt er sich auf die submit-Option des Formulars?

    Ich weiß nur soviel, dass onsubmit auch feuert, wenn das Formular per Return-Taste statt klick auf Submit-Button abgeschickt wird. Ich würde Vermuten, dass das auch bei .submit() so ist, aber was hindert dich daran es einfach auszuprobieren?
    Bau dir dafür einfach ein Formular mit onsubmit="alert('bla')" das du dann per .submit() abschickst.

    mfG,
    steckl

  2. Hi,

    ich möchte das submit-Event überwachen. Springt der Listener auch für JavaScript-gesteuertes Absenden via ".submit()" an?

    Probier's aus.

    Ansonsten: Es gibt extra Mechanismen, um Events zu feuern. Rat mat, welcher Browser die nicht unterstützt ...

    Gruß, Cybaer

    --
    Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
    (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
  3. Hi,

    ich möchte das submit-Event überwachen. Springt der Listener auch für JavaScript-gesteuertes Absenden via ".submit()" an? Oder beschränkt er sich auf die submit-Option des Formulars?

    Falls nicht - dann haenge in deine Funktion, die form.submit() aufruft, einfach noch ein form.onsubmit() mit rein.

    MfG ChrisB

    --
    "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
    1. Hi,

      Falls nicht - dann haenge in deine Funktion, die form.submit() aufruft, einfach noch ein form.onsubmit() mit rein.

      Was so einfach allerdings nur funktioniert, wenn man den Handler "direkt" installiert hat, und nicht mittels DOM-Methoden "added" ...

      Gruß, Cybaer

      --
      Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
      (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
  4. Hallo nochmal.

    Also ich habs ausprobiert: JS-generierte submit-Events werden definitiv nicht durch den Eventlistener berücksichtigt.

    Meine nachfolgenden Listener springen nur auf das Formular-eigene Submit an ...
    if (window.addEventListener)
    {
    window.addEventListener('submit', function(eventObject) {myEventListener.handleEvent(eventObject);}, false);
    }
    else if (document.addEventListener)
    {
    document.addEventListener('submit', function(eventObject) {myEventListener.handleEvent(eventObject);}, false);
    }
    else if (window.attachEvent)
    {
    window.attachEvent('onsubmit', function(eventObject) {myEventListener.handleEvent(eventObject);});
    }

    Auch ...
    document.forms[x].onsubmit = function(eventObject) {myEventListener.handleEvent();};

    zeigt keinerlei Wirkung.

    Hat jemand eine Idee, wie sich auch JS-basierte submits mittels document.forms[x].submit() abfangen ließen?

    Verzweifelte Grüße.

    1. Hallo,

      Hat jemand eine Idee, wie sich auch JS-basierte submits mittels document.forms[x].submit() abfangen ließen?

      Wieso willst du das denn unbedingt?

      Warum setzt du den Handler nicht auf traditionelle Weise und rufst onsubmit auf?

      Wenn du unbedingt DOM Events (addEventListener) bzw. Microsofts attachEvent benutzen willst, kannst du immer noch synthetische Events feuern.

      Mathias

  5. Hallo zusammen.

    Kurzer Hinweis vorab (bevor ich mich wieder unbeliebt mache): dieses Posting dient als *Erweiterung* zum Beitrag http://forum.de.selfhtml.org/?t=174448.

    Ein Script-gesteuertes Submit eines Formulars via Formular.submit() löst kein onsubmit-Event aus. Somit läßt sich auch mit einem Eventhandler an dieser Stelle kein Blumentopf gewinnen.

    Also Lösung bietet sich hier, das Standard-Submit zu überschreiben. Dies wirkt sich dann nicht nur auf das submit des Formulars aus, sondern grundsätzlich auf alle submits.

      
    HTMLFormElement.prototype.submit = function(eventObject) {...}  
    
    

    Wird das Formular über ein Script abgeschickt, wird leider kein eventObject übergeben. Um zu ermitteln, für welches Formular der Seite das submit ausgelöst wurde, bietet sich alternativ "this" an.

      
    var targetForm = eventObject ? eventObject.target : this;  
    
    

    An dieser Stelle noch eine Frage: mein IE7 kennt das HTMLFormElement nicht. Zwar scheine ich nicht der einzige mit diesem Problem zu sein, laut MSDN sollte es dieses Objekt aber geben.

    Hat jemand einen Tip für mich, wie ich auch im IE auf das HTMLFormElement zugreifen kann?

    Vielen Dank.

    1. Hi,

      Ein Script-gesteuertes Submit eines Formulars via Formular.submit() löst kein onsubmit-Event aus. Somit läßt sich auch mit einem Eventhandler an dieser Stelle kein Blumentopf gewinnen.

      Also Lösung bietet sich hier, das Standard-Submit zu überschreiben. Dies wirkt sich dann nicht nur auf das submit des Formulars aus, sondern grundsätzlich auf alle submits.

      Und warum nicht *nur* die submit-Methode des Formularelements, an das sowieso gerade eine onsubmit-Event angehaengt werden soll, individuell ueberschreiben?

      HTMLFormElement.prototype.submit = function(eventObject) {...}

      
      >   
      > An dieser Stelle noch eine Frage: mein IE7 kennt das HTMLFormElement nicht. Zwar scheine ich nicht der einzige mit diesem Problem zu sein, laut MSDN sollte es dieses Objekt aber geben.  
        
      Natuerlich kennt der IE auch Form-ELemente.  
      Aber das Prototyping von HTMLElement-Objekten, dass kennt er m.W. immer noch nicht.  
        
      MfG ChrisB  
        
      
      -- 
      "The Internet: Technological marvel of marvels - but if you don't know \*what\* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."