wenn checkbox aktiviert müssen bestimmte Felder ausgefüllt werden

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
DoppelNull00
Beiträge: 3
Registriert: 16.04.2009, 14:54

wenn checkbox aktiviert müssen bestimmte Felder ausgefüllt werden

Beitrag von DoppelNull00 » 16.04.2009, 15:38

Hallo,

ich habe folgendes Problem:

Wenn man eine Checkbox aktiviert soll man möglichst nicht weiter das Formular ausfüllen können, bis alle anderen Felder in der entsprechenden Zeile ausgefüllt wurden.
Das wäre die ideale Lösung des Problems...
Wenn so etwas gar nicht möglich ist würde ich mich allerdings auch damit zufrieden geben, wenn eine Art Meldung kommt die dem Benutzer sagt er solle doch bitte daran denken alle Felder auszufüllen, sobald er die Checkbox aktiviert hat. Am Besten wäre dann natürlich noch wenn noch eine Meldung kommt, wenn er nicht alle Felder ausgefüllt hat und in eine andere Zeile klickt oder auf eine ganz andere Stelle im Formular.

Ich hoffe so etwas ist zu realisieren, da ich bisher keine Ahnung hab wie ich das angehen soll.

TimoTrautmann
Beiträge: 13
Registriert: 19.11.2008, 08:49

wenn checkbox aktiviert müssen bestimmte Felder ausgefüllt werden

Beitrag von TimoTrautmann » 17.04.2009, 10:40

Hallo,

eine Idee wäre es das Feld in Abhängigkeit von Deiner Checkbox auf "Mandatory" zu setzen (validate.nullText Eigenschaft).

Folgender Code setzt diese Eigenschaft für ein Textfeld in Abhängigkeit von einem in einer Listbox selektierten Wert.

[font=courier new]var valNew = parseInt($.boundItem(xfa.event.change));
// ist der selektierte Wert < 50 muss im Feld Anmerkung etwas eingegeben werden
if (valNew < 50) {
    Anmerkung.validate.nullTest = "error";
} else {
    Anmerkung.validate.nullTest = "disabled";
}[/font]

Der Code wird im Change Ereignis einer Listbox ausgeführt. Ergebnis ist, dass das Formular nicht mehr gespeichert oder versendet werden kann, wenn kein Eintrag im Textfeld "Anmerkung" eingetragen ist, falls der Wert in der Listbox < 50 ist.
Ich denke diese Vorgehen ist das einfachste für Dich.

Alternativ könntest Du natürlich auch für alle anderen Felder Deines Formulars die "Access" Eigenschaft auf "readOnly" setzen, um dort alle Eingaben zu verhindern, so lange Deine "Muss-Felder" nicht ausgefüllt sind. Diese Vorgehen halte ich aber für umfangreiche Formulare für nicht praktikabel (zu viel Programmieraufwand und zu lange JavaScript Laufzeit bei der Ausführung).

Viele Grüße
Timo


DoppelNull00
Beiträge: 3
Registriert: 16.04.2009, 14:54

wenn checkbox aktiviert müssen bestimmte Felder ausgefüllt werden

Beitrag von DoppelNull00 » 17.04.2009, 11:30

Erstma Danke für die Antwort, aba...

bei mir klappt es jetzt erstma auf anhieb nicht...liegt aber wohl daran, dass ich irgendwas falsch mache, deshalb hab ich noch n paar Fragen.

Ich habe jetzt den Code einmal einfach so in das Change-Ereignis eingefügt(natürlich den Namen "Anmerkung" auf mein Textfeld angepasst), jedoch nix passiert. Danach hab ich den Code eingefügt, wenn die Checkbox auch wirklich ausgewählt wurde, heißt:

[font=courier new]if (Kontrollkästchen40.rawValue == 1) {[/font]
[font=courier new]var valNew = parseInt($.boundItem(xfa.event.change));
// ist der selektierte Wert < 50 muss im Feld Anmerkung etwas eingegeben werden
if (valNew < 50) {
    Anmerkung.validate.nullTest = "error";
} else {
    Anmerkung.validate.nullTest = "disabled";
}
}

[font=verdana]Klappt leider auch nicht, konnte das Dokument trotzdem speichern.
Ich hab deshalb jetzt nochma 3 Fragen:
1. Wenn der Code richtig eingesetzt ist, könnte ich das Dokument nicht mehr speichern oder senden, gibt's auch die Möglichkeit das ich es nicht mehr drucken kann?
2. Könntest du das mit dem Wert < 50 vielleicht einmal genauer erklären, damit ich verstehe was dann dort passiert?
und 3. Wo kann ich die 'Access' Eigenschaften von den anderen Felder sehen und ändern?


[/font][/font]

TimoTrautmann
Beiträge: 13
Registriert: 19.11.2008, 08:49

wenn checkbox aktiviert müssen bestimmte Felder ausgefüllt werden

Beitrag von TimoTrautmann » 17.04.2009, 22:20

zu
1.: Du kannst das Dokument nicht mehr über einen Button versenden. Speichern und drucken geht aber noch (siehe JavaScript Doku LCD)
2.: Die Logik in meinem Template ist die, dass ein User aus einer Listbox einen Wert zwischen  0 und 100 (in 10% Schritten) auswählt. Ist der gewählte Wert < 50 muss er in einem Textfeld seine Auswahl begründen.
3. Formularfeld.access = <ein Wert>

Ich habe Dir ein Beispiel PDF angehängt, in dem Du genau die Auswirkungen der einzelnen Properties sehen kannst.

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

DoppelNull00
Beiträge: 3
Registriert: 16.04.2009, 14:54

wenn checkbox aktiviert müssen bestimmte Felder ausgefüllt werden

Beitrag von DoppelNull00 » 29.04.2009, 15:42

DANKE für die Antwort und das Formular, hat mir echt geholfen.
Hab es noch ein wenig für meine Zwecke modifiziert und dann hat's gepasst!
Danke nochmal.

Antworten