Expand my Community achievements bar.

Enhance your AEM Assets & Boost Your Development: [AEM Gems | June 19, 2024] Improving the Developer Experience with New APIs and Events
SOLVED

Hintergrundfarbe eines Textfeldes ändern

Avatar

Level 2

Hallo Zusammen, da ich den Adobe Experience Manager - Froms (Designer) nicht finden kann, poste ich mal hier.

Ich erstelle pdf Formulare. Ich möchte, das ein Feld beim reinklicken die Farbe ändert. Ich finde nicht, wo das geht. Bzw. wenn ich versuche Aktionen einzufügen, also wenn "ist" oder "ist eingegeben" oder sowas, und dann "Hintergrundfarbe ändern" einstelle, passiert leider nichts. Wenn ich es mit der Vordergrundfarbe versuche, ändert sich die Schriffarbe, was mir keinen Sinn macht. Ich kann generell bei den Einstellungen nur die Rahmenfarbe des Kästchens (was per default grau ist) ändern, dann ändert sich interessanterweise auch die Füllung wenn man reinklickt. Aber ich will keinen Rahmen haben und schon garnicht dauerhaft in der Farbe. Ich verstehe leider die Logik nicht und kann nicht finden wie ich das machen kann. Vielleicht kann jemand helfen?

1 Accepted Solution

Avatar

Correct answer by
Level 10

Designer hat einen Skript-Editor, in dem man Skripte für viele unterschiedliche Ereignisse für z.B. Felder in dem Formular hinterlegen kann. Diesen kann man mit [Strg]+[Shift]+[F5] ein- und ausblenden. 

radzmar_0-1697567027284.png

 

Zum Ändern der Farbe ein Erreichen und Verlassen des Feldes musst Du im enter und exit Event jeweils ein Skript hinterlegen.

this.ui.oneOfChild.border.fill.color.value = "255,0,0"; // Eingabebereich rot färben

 

 

 

View solution in original post

6 Replies

Avatar

Level 10

Ich gehe mal davon aus, dass Du mit dem Designer die PDFs erstellst?! Alle Felder dort sind Container mit mehrere Elemente, die alle separat gesteuert werden können. Ein Textfeld beispielsweise kann man komplett färben oder auch nur den Eingabebereich davon. Diese Elemente kann man per Scripting adressieren. Der Hintergrund des Feldes etwa kann mit this.border.fill.color.value adressiert werden, der Eingabebereich mit this.ui.oneOfChild.border.fill.color.value.

radzmar_0-1695669611101.png

 

Um die Farbe bei der Eingabe zu ändern, benutze ein Skript im change-Event des Feldes:

this.ui.oneOfChild.border.fill.color.value = xfa.event.fullText === "Test" ? "204,255,255" : "255,255,255";

 

 

Avatar

Level 2

Danke für die Antwort. Noch einmal bitte für blöde.

Ich ersetzte

this.ui.oneOfChild.border.fill.color.value

durch den Namen meines Feldes.

Was ersetzte ich für "Test"? In meinem Feld steht ja nichts und es hat keinen extra Namen. Oder bleibt Test bestehen?

Noch etwas?

Beim ersten Versuch (mit "Test") ändert sich die Farbe nicht.

Avatar

Level 10

Ähm nein. Du kopierst das Skript in das change-Event deines Feldes. Das Wort this referenziert dabei auf dieses Feld und von da aus dann auf das Unterelement ui und dessen Unterelement oneOfChild usw. 

 

Anstatt "Test" gibst Du halt das Wort an, bei dem sich die Farbe des Feldes ändern soll. Welche Farbe es dabei erhalten soll gibst Du danach als RGB-Wert an, also irgendetwas zwischen "0,0,0" und "255,255,255". Der zweite Farbwert gibt die Farbe an, die das Feld haben soll, wenn nicht das gesuchte Wort eingegeben wurden, in diesem Fall "255,255,255", also Weiß.

this.ui.oneOfChild.border.fill.color.value = xfa.event.fullText === "Test" ? "204,255,255" : "255,255,255";

 

Avatar

Level 2

Guten Morgen,

 

ich war leider krank, daher habe ich mich nicht damit beschäftigt.

Ich hätte gerne, das das Feld die Farbe ändert wenn ich reinklicke. Mir ist egal welcher Text dann eingegeben wird, die Farbe soll sich dann nicht ändern. Wenn das Textfeld verlassen wird, dann wieder die alte Farbe.

Wie mache ich das?

Außerdem, sorry ich habe einfach echt keine Ahnung, was ist das Change Event meines Feldes?

Avatar

Correct answer by
Level 10

Designer hat einen Skript-Editor, in dem man Skripte für viele unterschiedliche Ereignisse für z.B. Felder in dem Formular hinterlegen kann. Diesen kann man mit [Strg]+[Shift]+[F5] ein- und ausblenden. 

radzmar_0-1697567027284.png

 

Zum Ändern der Farbe ein Erreichen und Verlassen des Feldes musst Du im enter und exit Event jeweils ein Skript hinterlegen.

this.ui.oneOfChild.border.fill.color.value = "255,0,0"; // Eingabebereich rot färben

 

 

 

Avatar

Level 2

Guten Morgen, danke für die Antwort.

Leider habe ich dazu noch ein Anliegen. Beim ersten Dokument hat das ohne Probleme funktioniert. Beim nächsten Dokument habe ich das genau so wieder gemacht, aber nicht ein Feld ändert seine Farbe wie gewünscht. Wie kann das sein? Ich verstehe nicht was hier anders ist, weil ich die Dokumente eigentlich auf die gleiche Weise erstellt habe.