Rocky: 2 x OnSubmit, geht das?

Hi Ihr,
ich habe keinen Schimmer von Javasript!!!

<FORM ACTION="blabla.cgi" METHOD="POST" NAME="Hallo" OnSubmit="return IsValid()">

Ich möchte gerne eine zweite OnSubmit-Anweisung anfügen,

onSubmit="return formCheck()"

Geht das??

Und wenn ja, wie??

Danke für Eure Mühe
Rocky

  1. Trenn das ganze mit ;! Also onSubmit="return formCheck(); return isValid();"
    müsste so eigentlich gehen!

    Hi Ihr,
    ich habe keinen Schimmer von Javasript!!!

    <FORM ACTION="blabla.cgi" METHOD="POST" NAME="Hallo" OnSubmit="return IsValid()">

    Ich möchte gerne eine zweite OnSubmit-Anweisung anfügen,

    onSubmit="return formCheck()"

    Geht das??

    Und wenn ja, wie??

    Danke für Eure Mühe
    Rocky

    1. Trenn das ganze mit ;! Also onSubmit="return formCheck(); return isValid();"
      müsste so eigentlich gehen!

      Hi Ihr,
      ich habe keinen Schimmer von Javasript!!!

      <FORM ACTION="blabla.cgi" METHOD="POST" NAME="Hallo" OnSubmit="return IsValid()">

      Ich möchte gerne eine zweite OnSubmit-Anweisung anfügen,

      onSubmit="return formCheck()"

      Geht das??

      Und wenn ja, wie??

      Danke für Eure Mühe
      Rocky

      Hm, danke erst mal für die schnelle Antwort, aber das hat nicht geklappt.

      Rocky

      1. ...wenn auch minimal umgewandelt, weil das return in einer variablen abgelegt wurde und ich die formCheck in die isvalid funktion mit hineingenommen habe, aber letztlich dann doch genau nach deinem Muster.

        Danke nochmal!!

        Rocky

  2. Hallo!

    Ich hab da einen etwas gewagten Vorschlag ;-)

    <FORM ACTION="blabla.cgi" METHOD="POST" NAME="Hallo" OnSubmit="return submitForm()">

    function submitForm() {
       if ( isValid() ) { return formCheck(); }
       else { return false; }
    }

    Nur wenn sowohl isValid() als auch formCheck() true zurückliefern (d.h. keinen Fehler finden) wird das Formular abgeschickt, ansonsten nicht (return false)

    :-)

    liebe Grüsse
    Bernhard

    1. Hallo!

      Ich hab da einen etwas gewagten Vorschlag ;-)

      <FORM ACTION="blabla.cgi" METHOD="POST" NAME="Hallo" OnSubmit="return submitForm()">

      function submitForm() {
         if ( isValid() ) { return formCheck(); }
         else { return false; }
      }

      Nur wenn sowohl isValid() als auch formCheck() true zurückliefern (d.h. keinen Fehler finden) wird das Formular abgeschickt, ansonsten nicht (return false)

      :-)

      liebe Grüsse
      Bernhard

      Hi Bernhard,

      tolle Idee, aber es läuft so leider nicht.

      Ted

      1. Hallo!

        tolle Idee, aber es läuft so leider nicht.

        Und ob! Ich lass mir nix nachsagen, also hab ich's eingetippt ;-)

        Ihr könnt es ausprobieren:

        <html>
        <head>
        <title>Untitled Document</title>
        <SCRIPT LANGUAGE="JavaScript">

        function isValid(status)   { return status; }
        function formCheck(status) { return status; }

        function submitForm() {
           if ( isValid(true) ) { return formCheck(true); }
           else { return false; }
        }

        </SCRIPT>
        </head>

        <body>
        <p> </p>
        <form action="/cgi-bin/test.pl" onSubmit="return submitForm();">
        <input type="submit">
        </form>
        </body>
        </html>

        Wenn also die beiden Funktionen (isValid und formCheck) was anständiges zurückgeben, dann hauts hin! Versucht einfach mal bei den zwei Aufrufen in submitForm() statt 'true' ein 'false' zu übergeben, dann haut's nicht hin, und das Formular wird nicht abgeschickt! -false und true natürlich ohne '' sonst wird's ja als String übergeben, und ich bin erst wieder der Dumme!

        :-)

        Einmal hab ich ein elegantes script, und keiner glaubt mir dass es funktioniert, irgendwas mache ich falsch :-(

        liebe Grüsse
        Bernhard

    2. Hallo!

      Ich hab da einen etwas gewagten Vorschlag ;-)

      <FORM ACTION="blabla.cgi" METHOD="POST" NAME="Hallo" OnSubmit="return submitForm()">

      function submitForm() {
         if ( isValid() ) { return formCheck(); }
         else { return false; }
      }

      Nur wenn sowohl isValid() als auch formCheck() true zurückliefern (d.h. keinen Fehler finden) wird das Formular abgeschickt, ansonsten nicht (return false)

      :-)

      liebe Grüsse
      Bernhard

      Hi Bernhard,

      hat nicht geklappt, aber Du hast mich da auf was gebracht.

      das ganze muß nämlich sogar so laufen, daß return formCheck() nur dann ausgeführt wird, wenn isvalid true ist.

      Rocky

      1. Hallo Rocky

        function submitForm() {
           if ( isValid() ) { return formCheck(); }
           else { return false; }

        das Problem ist wahrscheinlich, dass es in der If-Bedinung return isValid(); heissen sollte. Dann passiert genau das was du willst, auch das:

        das ganze muß nämlich sogar so laufen, daß return formCheck() nur dann ausgeführt wird, wenn isvalid true ist.

        Falls die Variante nicht funktioniert, dann kannst du das return isValid() ja mal in eine Variable laden, die dann in der If-Bedingung abgefragt wird.

        Grüsse
        Christoph

        1. Hi!

          das Problem ist wahrscheinlich, dass es in der If-Bedinung return isValid(); heissen sollte.

          Nein, wenn er schreibt if(return isValid()) beendet ér die Funktion und gibt den Rückgabewert der Funktion isValid() an das aufrufende Programm zurück! ;-)

          Ich fürchte eher, dass Rocky in der Funktion isValid() keinen Rückgabewert hat (return true/false). Denn wenn's das nicht gibt, funktioniert natürlich auch keine if-Abfrage :-(

          Es sollte so sein:

          // if (isValid()) return formCheck();

          isValid() wird aufgerufen, abgearbeitet, und sollte daraufhin entweder true (ok) oder false (fehler) an die aufrufende Funktion (submitForm()) zurückgeben.

          Wenn von isValid() true zurückgegeben wird ist auch die if-Bedingung true, d.h. der if-Anweisungsblock wird ausgeführt: Zuerst wird formCheck() aufgerufen und gibt wiederum true oder false zurück, und das wird dann direkt (return formCheck()) ans Hauptprogramm zurückgegeben, was heissen soll, dass der Rückgabewert von formCheck() 1:1 an den onSubmit-Scriptaufruf zurückgegeben wird!

          Wenn von isValid() false zurückgegeben wird ist if(false) 'false' daher wird der if-Anweisungsblock gar nicht erst durchlaufen, sondern der else-Block, und der gibt 'false' an den Scriptaufruf zurück!

          Eigentlich ganz logisch, oder ;-)

          liebe Grüsse
          Bernhard

  3. Hi Ihr,
    ich habe keinen Schimmer von Javasript!!!

    <FORM ACTION="blabla.cgi" METHOD="POST" NAME="Hallo" OnSubmit="return IsValid()">

    Ich möchte gerne eine zweite OnSubmit-Anweisung anfügen,

    onSubmit="return formCheck()"

    Geht das??

    Und wenn ja, wie??

    Danke für Eure Mühe
    Rocky

    das ganze muß nämlich sogar so laufen, daß return formCheck() nur dann ausgeführt wird, wenn isvalid true ist.

    Rocky

  4. ......und das, obwohl ich Null-Ahnung von JavaScript habe.
    Danke

    Rocky