Submit Email immer nach einmalig, erfolgreicher Mail-Erstellung auch im Fehlerfall (Javascript)

Per Email, Webservices oder ähnliches...
Antworten
zico
Beiträge: 12
Registriert: 29.07.2010, 14:24

Submit Email immer nach einmalig, erfolgreicher Mail-Erstellung auch im Fehlerfall (Javascript)

Beitrag von zico » 13.02.2012, 15:12

Hallo,

ich habe ein Problem beim Versand eines Formulars per Email.

U.a. werden in dem Formular Checkbox Felder geprüft, falls angeflaggt müssen 3 weitere Felder gefüllt werden.

Beim Klick auf den Submitbutton ( Typ: BUTTON, kein EMAIL BUTTON   ) wird die Prüfung im ENTER Event des Javascript Codes durchgeführt und im Fehlerfall wird eine Messagebox ausgegeben.

Hier ein Beispiel einer Feldprüfung mit Fehlerausgabe:

 if (( strBT == null || strBT == ""   ) || ( strDescr == null || strDescr == "" ))
            {
               xfa.host.messageBox("Please fill out the required data" ); 
               bolDataflag = true;
               exit;
            }



Soweit passt das alles gut.
Bei einem Szenario geht es aber nicht. Wenn im Formular alles korrekt ausgefüllt ist, dann wird die Email erzeugt. Nun breche ich aber ab weil ich was vergessen habe. Ich ergänze Daten, die Feldprüfungen werden durchlaufen, Fehler entdeckt und per MessageBox angezeigt. Am Ende aber wird DENNOCH die  Email wieder erzeugt. Selbst wenn ich das Interactive Form auf Festplatte speichere und wieder neu lade, "merkt" sich das Interactive Form die ehemals erfolgreiche Erzeugung und erzeugt wieder eine Email auch wenn der Javascriptcode nicht mehr an die Stelle im Code ( this.resolveNode("#event").submit.target
  ) kommt:

Hier der Code der die Erzeugung der Email steuert oder verhindert:



if ( bolDataflag != true  )
{

    this.resolveNode("#event").submit.target = "mailto:"+$record.IF_SUBMIT_EMAIL.value+"?subject="+$record.IF_SUBMIT_SUBJECT.value+"&Body=" + "Hier steht der Bodytext."
}
else
{
    xfa.host.messageBox("Error during email processing !"); 
    xfa.event.cancelAction = 1;
   
}

Welcher Mechanismus ist dafür verantwortlich, dass ,wenn eine Email einmal erzeugt werden konnte, diese Email immer erzeugt wird, auch wenn sie durch das Fehlerhandling laut Code gar nicht erzeugt werden dürfte ?

Hoffe jemand hat einen guten Tipp.

Danke !


Benutzeravatar
radzmar
Beiträge: 961
Registriert: 26.10.2011, 10:18

Submit Email immer nach einmalig, erfolgreicher Mail-Erstellung auch im Fehlerfall (Javascript)

Beitrag von radzmar » 13.02.2012, 19:02

Ich mutmaße mal, dass das erste Skript nicht alle Bedingungen in deinem Formular abdeckt.
Die Variable "bolDataflag" wird zwar auf true gesetzt, wenn strBT null ist, aber in allen anderen Fällen nicht mehr auf false.
Und was soll das exit; da bedeuten?

Code: Alles auswählen

if (strBT.isNull || strDescr.isNull) {
    xfa.host.messageBox("Please fill out the required data");
    bolDataflag = true;
} else {
	bolDataflag = false;
}

zico
Beiträge: 12
Registriert: 29.07.2010, 14:24

Submit Email immer nach einmalig, erfolgreicher Mail-Erstellung auch im Fehlerfall (Javascript)

Beitrag von zico » 14.02.2012, 11:22

Also die Logik die ich gebaut habe funktioniert einwandfrei, das sind hier nur Codeauszüge.

Mein Problem ist, dass , sobald einmal der Javascript Code durchlaufen wurde ( ich habe alle bis auf eine Prüfung entfernt, diese wird fehlerfrei prozessiert) und die EMail mit dem Kommando

this.resolveNode("#event").submit.target = "mailto:"+$record.IF_SUBMIT_EMAIL.value+"?subject=Subjekttext bla bla bla ...

erzeugt wurde, bei jeder erfolgreichen Fehlerprüfung die Email immer wieder am Ende des Codes erzeugt wird, auch wenn nachweislich dieser Code zur Erzeugung der Email NICHT ausgeführt wird (mit massig Messageboxen zwischen jeder Zeile Code nachvollzogen).

D.h. in irgendeiner Art und Weise wird die Emailerzeugung "gemerkt" , die Email wird dann von mir wieder geschlossen weil die Bearbeitung in der Interactive Form noch weitergehen soll.

Wenn ich hier nun in der Interactive Form bewusst einen Fehler einbaue sodass die Fehlerprüfung per Messagebox mir anzeigt dass der Fehler erkannt wurde ... selbst dann wird nach Abarbeitung des Codes aus dem ENTER Event die Email erzeugt.


Vorgehen:

1. Interactive Form ausfüllen ohne Fehler
2. Email wird erzeugt
3. Email wird wieder geschlossen weil im Interactive Form nachgebessert werden soll
4. Änderung im Interactive Form mit Fehler, sodass die Fehlerprüfung zuschlagen muss
5. Fehlerprüfung bringt Messagebox Meldung über den Fehler und Code führt das Komando ...submit.target.... NICHT AUS
6. Email wird dennoch erzeugt obwohl der Code dafür nicht ausgeführt wird




Antworten