Ploch, Andreas: onSubmit-Ereignis mittels Javascript nachträglich hinzufügen

Hallo zusammen !

seit einigen Tagen habe ich mich an einem kleinen Problem festgebissen ....
Ich habe folgende Javascript-Funktion :

function addEvent(obj, evType, fn) {
 if (obj.addEventListener){
   obj.addEventListener(evType, fn, false);
   return true;
 } else if (obj.attachEvent){
   var r = obj.attachEvent("on"+evType, fn);
   return r;
 } else  return false;
}

Diese funktioniert wie vorgesehen und ich kann z.Bsp. mittels

addEvent(window, 'load', replaceSearchField, false);

nach dem Laden der Seite den Aufruf einer replaceSearchField() - Funktion erzeugen. Dies finde ich ganz brauchbar, da ich somit keinen Javascript - Code in meinen XHTML-Quelltext einbauen brauche und dieser somit übersichtlich bleibt.

Aber :
Ich besitze ein Formular, welchen ich nach Laden der Seite ein onsubmit="suchen()" - Ereignis mittels o.g. Funktion im <form>-Tag hinzufügen möchte.

<form name="form1" id="form1" method="post" action="">
  <input name="begriff" type="text" id="begriff" />
  <input type="submit" name="Submit" value="Senden" />
</form>

Mit welchen Argument muß ich die addEvent - Funktion aufrufen, um das Formular ansprechen zu können ?
addEvent(document.form1, 'onsubmit', suchen, false);
funktioniert leider nicht ....

Hätte jemand einen Vorschlag ?
Vielen Dank schon mal im voraus für evtl. eingehende Antworten !
Andreas

  1. Hallo Ploch,.

    <form name="form1" id="form1" method="post" action="">
      <input name="begriff" type="text" id="begriff" />
      <input type="submit" name="Submit" value="Senden" />
    </form>

    Mit welchen Argument muß ich die addEvent - Funktion aufrufen, um das Formular ansprechen zu können ?
    addEvent(document.form1, 'onsubmit', suchen, false);
    funktioniert leider nicht ....

    Natürlich nicht. Schließlich existiert kein <http://de.selfhtml.org/javascript/objekte/forms.htm#allgemeines@title=Formular mit dem Namen> „form1“. Dass eines mit der ID „form1“ existiert, tut nichts zur Sache.

    Entweder fügst du nun noch den erforderlichen Wert für das namen-Attribut hinzu, greifst gleich mit document.getElementById("form1") darauf zu oder greifst mittels Index in der document.forms-Kollektion auf das Formular zu.

    Hätte jemand einen Vorschlag ?
    Vielen Dank schon mal im voraus für evtl. eingehende Antworten !

    Du plenkst.

    Einen schönen Mittwoch noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    <mathbr:del.icio.us />
    1. Hallo.

      <form name="form1" id="form1" method="post" action="">

      Natürlich nicht. Schließlich existiert kein <http://de.selfhtml.org/javascript/objekte/forms.htm#allgemeines@title=Formular mit dem Namen> „form1“. Dass eines mit der ID „form1“ existiert, tut nichts zur Sache.

      Ich ziehe dies zurück, es ist offenbar noch zu früh.

      Wie lauten etwaige Fehlermeldungen? (JS-Konsole)

      Einen schönen Mittwoch noch.

      Gruß, Ashura

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      <mathbr:del.icio.us />
      1. hi,

        Ich ziehe dies zurück, es ist offenbar noch zu früh.

        Vielleicht ist das auch Andreas' Problem - dass er versucht, auf das Formular zuzugreifen, bevor es existiert.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Ich besitze ein Formular, welchen ich nach Laden der Seite ein onsubmit="suchen()" - Ereignis mittels o.g. Funktion im <form>-Tag hinzufügen möchte.

    Nicht vielleicht besser return suchen()?
    Evtl. wilst du das abschicken des Formulares verhindern.

    addEvent(document.form1, 'onsubmit', suchen, false);

    Schau dir nochmal die Funktion an und vor allem was aus dem 2. Parameter wird, der 4. Parameter ist überflüssig.

    Struppi.