Gruppe von Kontrollkästchen validieren

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
MacPurschi
Beiträge: 43
Registriert: 11.10.2012, 09:44

Gruppe von Kontrollkästchen validieren

Beitrag von MacPurschi » 19.10.2012, 12:59

Hallo zusammen,

ich möchte überprüfen, ob bei einer Gruppe von CheckBoxen wenigstens eine CheckBox angewählt wurde. Ich habe bereits herausgefunden, dass dies mit dem folgenden Code möglich sein müsste:

Code: Alles auswählen

var oNodes = xfa.resolveNodes("Test.*.ui.#checkButton");

Die Umsetzung allerdings will mir irgendwie nicht gelingen. Das Skript reagiert nicht so, wie ich es erwarten würde.

Meine 3 zu überprüfenden CheckBoxen sind von einem Teilformular mit Namen "Test" umschlossen.

In dem Formular soll von 3 Antwortmöglichkeiten wenigstens eine ausgewählt werden.
Dies soll anhand der Schaltfläche überprüft werden.

Ist keine Antwort ausgewählt worden, möchte ich den Hinweis bekommen, dass wenigstens eine Antwort ausgewählt werden muss. Wenn wenigstens eine Antwort ausgewählt wurde, möchte ich eine positive Bestätigung dafür bekommen.

Die Schaltfläche führt den folgenden Code aus:

Code: Alles auswählen

var oNodes = xfa.resolveNodes("Test.*.ui.#checkButton");
if (oNodes == null) {
app.alert ("Bitte wählen Sie eine Antwort!");
}
else {
app.alert ("Danke für die Auswahl!");
}
Soweit zur Theorie. In der Praxis bekomme ich allerdings immer sofort den Alert "Danke für die Auswahl", egal, ob etwas ausgewählt wurde oder nicht.

Was mache ich falsch?

Mein Test-Formular hänge ich an.

Bin für jede Unterstützung dankbar!!!

Viele Grüße
MacPurschi
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Gruppe von Kontrollkästchen validieren

Beitrag von armine » 19.10.2012, 18:16

Hallo MacPurschi,

geht es so? Eine derartige Abfrage kannst du auch dem mailto vorschalten.

vg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

MacPurschi
Beiträge: 43
Registriert: 11.10.2012, 09:44

Gruppe von Kontrollkästchen validieren

Beitrag von MacPurschi » 19.10.2012, 21:27

Hallo Armine,

vielen, vielen Dank.

Genau so sollte es sein. Auf dich ist wirklich verlass.

Leider habe ich hier Zuhause keine LCD, so dass ich nicht sehen kann, wie der Code nun aussieht. Aber das Ergebnis ist genau so, wie ich es haben wollte. SUPER!

Wenn ich das mit dem mailto dann auch noch hinbekomme ist mein Formular perfekt!

Ich melde mich Montag, wenn es geklappt hat auf jeden Fall noch einmal.

Wünsche dir ein tolles Wochenende!!!

Viele Grüße
MacPurschi

MacPurschi
Beiträge: 43
Registriert: 11.10.2012, 09:44

Gruppe von Kontrollkästchen validieren

Beitrag von MacPurschi » 22.10.2012, 10:11

Hallo Armine,

leider hilft mir Lösungsvorschlag noch nicht weiter.

Problem scheint zu sein, dass du den Code in FormCalc erstellt hast und ich sonst alles in JavaScript habe. Ich bekomme nämlich beim Ausführen die angehängte Fehlermeldung.

In meinem konkreten Fall - das von dir korrigierte PDF war ja nur ein Dummy - würde ich deinen Code gerne mit meinem vorhandenen kombinieren. Bis führe ich über die Schaltfläche folgenden Code aus:

Code: Alles auswählen

var pflichtfeld = xfa.form.execValidate();
if (pflichtfeld == true)

{

var oDoc = event.target;
oDoc.mailDoc({
bUI: false,
cTo: "MacPurschi@xxx.de",
cCc: E_Mail.rawValue,
cSubject: "Auftragsdaten für GP: " + gp.rawValue + " " + kunde.rawValue + " für Kampagne " + kampagne.rawValue,
cMsg: "*** Der Email-Betreff wurde automatisch generiert! Bitte NICHT verändern! ***"})
}
}
Ich würde deinen Code nun gerne als Prüfung davor schalten. Ich würde mir also vorstellen, dass mit ELSE mein schon aktiver Code aufgerufen wird. Die Kette wäre dann so:

CheckBox-Prüfung IF keine Box aktiviert = Fehlermeldung ELSE meine Pflichtfeldprüfung mit anschließendem Mailversand.

Ich hoffe, dass ich mir einigermaßen verständlich ausgedrückt habe?! Ist gar nicht so einfach, wenn man mit der Materie noch nicht so vertraut ist.

Vorab vielen Dank für deine Mühe.

Gruß MacPurschi
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

MacPurschi
Beiträge: 43
Registriert: 11.10.2012, 09:44

Gruppe von Kontrollkästchen validieren

Beitrag von MacPurschi » 22.10.2012, 12:40

Hallo Armine,

ich schätze es ist wesentlich einfacher, wenn ich dir das Formular, um das es geht eben zur Verfügung stelle. Dann kannst du dir ein besseres Bild davon machen, wo mein Problem liegt.

Also: Der "Formular senden"-Button ist soweit schon OK soll nur um die besagte Checkbox-Prüfung erweitert werden. Konkret geht es um die 5 CheckBoxen des Teilformulars "validate_platz" Die CheckBoxen heißen zurzeit pz (0-4).

Beim MouseUp auf dem "Formular senden"-Button soll folgendes passieren:
  1. 1. Überprüfung, ob wenigstens eine CheckBox aus dem Bereich Platzierung aktiv ist
    2. Fehlermeldung, falls keine CheckBox aktiv ist - Kein Mailversand
    3. Ist wenigstens eine Checkbox aktiv, dann Pflichfelder überprüfen - wenn OK Mailversand
Vielen Dank für deine Hilfe.
Ohne dich wäre ich echt aufgeschmissen!

Viele Grüße
MacPurschi
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Gruppe von Kontrollkästchen validieren

Beitrag von armine » 23.10.2012, 20:26

Hallo MacPurschi,

da waren wir beide recht optimistisch. Der Teufel steckt im Detail. Du hast zahlreiche Teilformulare die du abfragen musst.

In FormCalc kann ich mir mit dem Sternchen bei gleichnamigen Objekten so manchen Schleifendurchlauf sparen. Bei deinem Aufbau ist das etwas aufwendiger. Mit [font=courier new]xfa.resolveNode[/font] kommt man aber den Objekten auf die Spur. Das Referenzieren wird aber bei deinen unbenannten Teilformularen für einen Anfänger nicht einfach sein.

Für das Beispiel habe ich mir ein einfaches Muster und ein anderes mit Unterhaltungswert ausgesucht. Für beide werden die Erkenntnisse in einem Textfeld ausgegeben.

Bei "PLATZIERUNG" braucht man nur die Kontrollkästchen ablaufen und die angeklickten zählen.

Bei "Werbemittel" hast du anschauliches Muster, wie es aussieht, wenn man eine Kaskade unbenannter Teilformulare produziert.
Die untergeordneten Teilformulare habe ich aufgelöst, damit das dort versteckte Kontrollkästchen mit beachtet wird. Nun steht aber auch das dort einblendbare Textfeld im Feuer. Weil der Objekttyp nicht auslesbar ist, dient als Krücke die Feldbenennung (beginnend mit "txt").

Nun kannst du für jedes Teilformular eine Schleife um [font=courier new]event.target.mailDoc[/font] legen, wie du das mit "pflichtfeld" gemacht hast. (Bei der Gelegenheit: Wozu eine Variable deklarieren, die einmal eine Zeile weiter benutzt wird?) Mit [font=courier new]else [/font]kommst du nicht weit, weil die Fehler ja gleichzeitig auftreten können.

Der Königsweg scheint mir, alle "oNodes" in einem Array zu sammeln. Dieses Array kannst du dann in einer übergeordneten Schleife wie die "oNodes" abarbeiten.

Ich wollte, die Erklärungen wären einfacher ausgefallen. Vielleicht gibt es zu konkreten Rückfragen einfache Antworten
 
vg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

MacPurschi
Beiträge: 43
Registriert: 11.10.2012, 09:44

Gruppe von Kontrollkästchen validieren

Beitrag von MacPurschi » 23.10.2012, 20:41

Hallo Armine,

vielen Dank für die ausführliche Antwort und die Anregungen im Formular.

Bin mir allerdings im Moment nicht sicher, ob ich alles Verstanden habe bzw. verstehen werde.

Ich werde mich ausführlich mit deiner Antwort und dem neuen Formular auseinander setzen und versuche, die für mich doch sehr komplexen Zusammenhänge zu verstehen.

In deiner Antwort sind viel Fachbegriffe, die ich zwar schon mal gehört habe, aber mit denen ich so noch nicht gearbeitet habe. Bin gespannt, wie weit ich beim Nachvollziehen deiner Anregungen komme.

Aber ich fürchte, dass ich deine Hilfe noch einmal in Anspruch nehmen muss. Wenn ich zu nervig werde, kannst du das aber auch ruhig sagen.

Bis die Tage mal - bin ja jetzt erst einmal gut beschäftigt!

:)

Viele Dank und Gruß
MacPurschi

Antworten