2 Funktionen onSubmit mit return
Ole
- javascript
0 wahsaga0 Ole0 Frank Opper0 wahsaga
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-)>
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
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-)>
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
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