Ole: 2 Funktionen onSubmit mit return

Hi

ich möchte (zusätzlich zur serverseitigen überprüfen) ein formular vor dem abschicken überprüfen.

Dazu muß ich zur schon vorhandenen, durch ColdFuion generierten Funktion eine zweite hinzufügen.

zur Zeit sieht der aufruf so aus:

onSubmit="return _CF_checkmyform(this);

ich mir also gedacht, da deine funktion nach der coldfusion-eigenen ausgeführt werden soll, mache ich es so:

onSubmit="return _CF_checkmyform(this); return checkmyform();"

die erste funktion wird weiterhin ausgeführt, die zweite jedoch nicht. zur überprüfung habe ich mir einfach einen alert ausgeben lassen....bzw. es sollte ein alert ausgegeben werden, diese blieb jedoch aus. die javscript console zeigte allerdings keinen fehler an.

drehe ich die reiehnfolge der dunktionsaufrufe um, wird nur meine zusätzlich funktion aufgerufen.

da die erste funktion von ColdFusion generiert wird (stichwort cfform, cfinput) habe ich keinen zugriff auf diese.

jemand ne idee wie ich das problem lösen könnte?

danke
Ole
(8-)>

--
Des Mannes Auto ist seine Burg.
Normalerweise ist ja des Mannes Haus seine Burg, aber nur wenn er den Drachen erschlagen kann, der darin wohnt.
  1. hi,

    onSubmit="return _CF_checkmyform(this); return checkmyform();"

    die erste funktion wird weiterhin ausgeführt, die zweite jedoch nicht.

    natürlich, weil durch das erste return schon aus dem event herausgesprungen wird.

    drehe ich die reiehnfolge der dunktionsaufrufe um, wird nur meine zusätzlich funktion aufgerufen.

    natürlich, ist das gleiche in grün.

    jemand ne idee wie ich das problem lösen könnte?

    per return kannst du nur einen wert zurückgeben.

    also musst du dafür sorgen, dass aus den ergebnissen beider funktionen ein "wert" wird.
    dies machst du am besten durch eine logische UND-verknüpfung, weil ja vermutlich das abschicken nur erfolgen soll, wenn beide funktionen true zurückgeliefert haben:

    onSubmit="return (_CF_checkmyform(this) && return checkmyform());"

    btw: laut selfhtml wäre _CF_checkmyform kein gültiger name für eine funktion.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. hi

      dies machst du am besten durch eine logische UND-verknüpfung, weil ja vermutlich das abschicken nur erfolgen soll, wenn beide funktionen true zurückgeliefert haben:

      onSubmit="return (_CF_checkmyform(this) && return checkmyform());"

      diese schreibweise kannte ich noch nicht, werd ich mal verinnerlichen :)

      btw: laut selfhtml wäre _CF_checkmyform kein gültiger name für eine funktion.

      ist mir auch schon mal aufgefallen. mir ist aber nciht bekannt ob macromedia das in einer der neueren ColdFusion Version (ich verwende immernoch 4.5) geändert hat.

      Dank dir
      Ole
      (8-)>

      --
      Des Mannes Auto ist seine Burg.
      Normalerweise ist ja des Mannes Haus seine Burg, aber nur wenn er den Drachen erschlagen kann, der darin wohnt.
    2. Hallo,

      onSubmit="return (_CF_checkmyform(this) && return checkmyform());"

      Wertet ein Browser auch beide Funktionen aus? Wenn _CF_checkmyform(this) zuerst gerufen wird und false liefert, ist ein Aufruf von checkmyform() meines Erachtens überflüssig.

      Besser wäre es, die CF-Funktion in der eigenen Funktion aufzurufen.

      Ergänzende Frage hierzu: Ist irgendwo definiert, in welcher Reihenfolge Ausdrücke aufgelöst werden? In http://de.selfhtml.org/javascript/sprache/operatoren.htm#rangfolge steht lediglich was zur Hierarchie.

      Viele Grüße
      Frank

      1. hi,

        onSubmit="return (_CF_checkmyform(this) && return checkmyform());"

        Wertet ein Browser auch beide Funktionen aus? Wenn _CF_checkmyform(this) zuerst gerufen wird und false liefert, ist ein Aufruf von checkmyform() meines Erachtens überflüssig.

        das handeln die javascriptinterpreter der browser auch genau so.

        logische ausdrücke werden von links nach rechts abgearbeitet.
        wenn also der erste teil falsch ist, und danach noch etwas mit UND verknüpft folgt, merkt der interpreter, dass dieser ausdruck nicht mehr wahr werden kann, prüft also die nachfolgenden teilbedingungen gar nicht mehr.

        darauf bauen ja auch die überprüfungen auf existenz gewisser methoden vor ihrer anwendung, bspw.

        if(document.getElementById && document.getElementById("xyz") { ... }

        diese abfrage soll überprüfen, ob es ein element mit der ID "xyz" im dokument gibt - zuerst aber muss sie natürlich mal herausfinden, ob die dazu benutzte methode überhaupt vorhanden ist.

        wenn der interpreter hier _nicht_ abbrechen würde, wenn die erste bedingung schon falsch liefert - dann würde die zweite ja auf einen fehler laufen.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."