Datumsfeld nur einmal initialisieren

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
ballslicer
Beiträge: 106
Registriert: 30.10.2013, 12:42
Wohnort: München

Datumsfeld nur einmal initialisieren

Beitrag von ballslicer » 11.04.2016, 19:45

Hallo an alle Acronauten und Lifecycle-Experten,

wie schaffe ich es, dass ich ein Datumsfeld, welches ich mit dem Tagesdatum fülle, so "festzurre", dass
es beim erneuten Öffnen nicht wieder das aktuelle Datum anzeigt sondern das "erstere"?

Ich hab schon einiges probiert mit feld.access = "ReadOnly" etc. aber nichts will so richtig funktionieren.

Also nochmal zum Verständnis:

Datumsfeld wird im "initialize"-Event mit dem Tagesdatum gefüllt. Funktioniert. Haken dran.
Ich bearbeite das Formular....speichere es. und beim erneuten Öffnen mit dem Reader z.B. 2 Wochen später (weil ich z.B. im Formular einen früher erfasssten Inhalt anschauen möchte läuft er wieder durch das initialize Event. Wie kann ich das unterbinden?

Mir würde ein "Workaround" einfallen...Globale Variable setzen z.B. auf 0 dann durchläuft er das init-Event. Den Code Datumsfeld setzen in einer if-else-Abfrage auf 0 oder 1 entsprechend im Event schachteln und danach die Variable auf 1 setzen.

Bleibt nur die Frage, ob beim Speichern Globale Variablen Werte mitgespeichert werden, so dass er beim nächsten Öffnen eben beim INIT-Event um das if herum läuft und nicht hinein.

Geht das? Ist das ordentlich programmiert? Gibts Alternativen? Zu kompliziert gedacht? Bin für alle Anregungen dankbar.

Grüße von der Isar.

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

Datumsfeld nur einmal initialisieren

Beitrag von armine » 12.04.2016, 00:28

DateTimeField1::docReady - (JavaScript, client)

if (this.isNull) this.rawValue = util.printd("yyyy-mm-dd", new Date())

sollte das Problem lösen.

Benutzeravatar
DavidL
Beiträge: 32
Registriert: 11.11.2015, 12:34

Datumsfeld nur einmal initialisieren

Beitrag von DavidL » 15.06.2016, 11:01

Hallo Leute

Ich habe ein ähnliches Problem und zwar:

Im "Initial" Ereignis steht bei mir folgendes

if (xfa.host.version < 8) {
this.resolveNode("$").fontColor = "135, 135, 135";
}
else {
var CaptionColorBackup = this.resolveNode("$").caption.font.fill.color.value;
this.resolveNode("$").font.fill.color.value = "135, 135, 135";
this.resolveNode("$").caption.font.fill.color.value = CaptionColorBackup;
}

Im Exit Event habe ich ein Script, welches dafür sorgt, dass die Schrift, wenn im Feld "Thema" etwas eingetragen wird, schwarz wird.

Bis anhin klappt alles, das Problem taucht auf, wenn ich das Dokument speichere und erneut öffne. Das "Thema", welches dann irgendein Titel ist, ist wieder grau (135, 135, 135) und sollte aber schwarz sein.
Ich nehme an, der "Initial event" wird dann nochmals ausgeführt, wobei die Schrift wieder auf grau wechselt, obwohl das "Thema"-Feld nicht leer ist.

Wie kann ich eine Bedingung schreiben, dass das Feld schwarz bleibt, wenn etwas drin steht?

Im Bild sind die grauen Felder gemeint, bei denen der default Text bei Eingabe verschwindet und die Schrift auf schwarz wechselt.

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

Tyr
Beiträge: 12
Registriert: 25.02.2016, 10:16

Datumsfeld nur einmal initialisieren

Beitrag von Tyr » 15.06.2016, 12:41

Hallo DavidL,

 Formular1.Inhalt.Textfeld1::initialize - (JavaScript, client)

if (xfa.host.version < 8)
 {
    this.resolveNode("$").fontColor = "135, 135, 135" ;
 }
else
 {
var CaptionColorBackup = this.resolveNode("$").caption.font.fill.color.value ;
    this.resolveNode("$").font.fill.color.value = "135, 135, 135" ;
    this.resolveNode("$").caption.font.fill.color.value = CaptionColorBackup ;
 }

 Formular1.Inhalt.Textfeld1::enter - (JavaScript, client)

this.fontColor = "0,0,0" ;

 Formular1.Inhalt.Textfeld1::exit - (JavaScript, client)

if (!(this.isNull || this.rawValue.length == 0)) {   
    this.fontColor = "0,0,0" ;
 }
 else
 {
    this.fontColor = "135, 135, 135" ;
 }
 
 Formular1.Inhalt.Textfeld1::docReady - (JavaScript, client)

this.execEvent("exit") ;

Versuch es mal so.

Gruß
Tyr


Benutzeravatar
DavidL
Beiträge: 32
Registriert: 11.11.2015, 12:34

Datumsfeld nur einmal initialisieren

Beitrag von DavidL » 15.06.2016, 13:12

Hallo Tyr

Vielen Dank für deine Antwort... leider klappt es so nicht wie gewünscht...

Ich habe die betroffenen Felder in meinem Formular angehängt, vielleicht kannst du mir dann besser helfen.

Danke schonmal ;-)

Gruess
David
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Tyr
Beiträge: 12
Registriert: 25.02.2016, 10:16

Datumsfeld nur einmal initialisieren

Beitrag von Tyr » 15.06.2016, 14:03

Bist Du bitte so nett und beschreibst, was genau Du im Objekt "TiteldesDokuments" erreichen möchtest?

Ich sehe im initialize, enter und im exit Event so ziemlich das selbe Skript?

caption.font.fill.color.value = CaptionColorBackup;

Es gibt doch gar keine Feldbeschriftung.

Benutzeravatar
DavidL
Beiträge: 32
Registriert: 11.11.2015, 12:34

Datumsfeld nur einmal initialisieren

Beitrag von DavidL » 15.06.2016, 14:26

Hm, ich weiss ist etwas kompliziert, ich versuche es mal Schritt für Schritt zu beschreiben:

1. TiteldesDokuments hat Standardwert: < Thema >
2. < Thema > ist standardmässig grau, also "135, 135, 135"
3. Wenn ich ins Textfeld "TiteldesDokuments" klicke verschwindet der Text "< Thema >" und ich kann einen beliebigen Titel eingeben (sagen wir mal "Flugzeug")
4. Der Titel "Flugzeug" erscheint nun schwarz, also "0, 0, 0"
5. Wenn ich "Flugzeug" wieder lösche und das Textfeld "TiteldesDokuments" leer hinterlasse, dann erscheint wieder der Standardwert "< Thema >" und zwar wieder in grau, also "135, 135, 135"

Soweit so gut... das klappt alles wie gewollt!

Nun ist es so:

6. Ich gebe im Textfeld "TiteldesDokuments" das Thema "Flugzeug" ein
7. "Flugzeug" wird schwarz dargestellt
8. Ich speichere das Dokument
9. Einen Tag später öffne ich das Dokument wieder und "Flugzeug" wird nun grau dargestellt, also "135, 135, 135", sollte aber schwarz sein.

Wie krieg ich es hin, dass beim wiederöffnen der Text im Textfeld "TiteldesDokuments" nicht grau sondern schwarz bleibt?
Ich hoffe es ist so etwas klarer, was mein Problem ist ;)

Tyr
Beiträge: 12
Registriert: 25.02.2016, 10:16

Datumsfeld nur einmal initialisieren

Beitrag von Tyr » 15.06.2016, 15:50

Ja, das war doch gut erklärt.

Die Reader Rechte sind vergeben, damit siehst Du das beim Öffnen die Schrift im "Thema" schwarz ist. Beim Löschen der Eingabe wird die Schrift wieder grau. Bei < ED Decision Number >  verhält es sich ähnlich, die Schrift bleibt aber schwarz und beim Drucken werden Eingaben berücksichtigt, insofern welche drinstehen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
DavidL
Beiträge: 32
Registriert: 11.11.2015, 12:34

Datumsfeld nur einmal initialisieren

Beitrag von DavidL » 16.06.2016, 10:43

Hallo Tyr

Vielen Dank für Deine Hilfe, so klappt es wie gewollt, genial!:D

Antworten