Formularfelder anhand Dropdownlisten-Auswahl zurücksetzen

Fragen & Antworten zur Steuerung von 3D Inhalten in PDFs über JavaScript
Antworten
Benutzeravatar
Ralf_AM
Beiträge: 2
Registriert: 06.05.2017, 13:06

Formularfelder anhand Dropdownlisten-Auswahl zurücksetzen

Beitrag von Ralf_AM » 16.05.2017, 01:49

Hallo,

ich habe eine Dropdown-Liste mit folgenden Einträgen [="Optionen" im Eigenschaftsdialogfenster) erstellt:

Code: Alles auswählen

Exportwert | Element
0 | Felder 1-10 zurücksetzen
1 | Felder 11-20 zurücksetzen
2 | Felder 21-30 zurücksetzen
In Aktionen ist "Maustaste loslassen" mit der Aktion "Javascript ausführen" hinzugefügt worden.

Nun würde ich gerne folgendes per Javascript machen:

If (Exportwert==0){
--> setze die Felder 1-10 zurück
}
else if (Exportwert==1){
--> setze die Felder 11-20 zurück
}
else if (Exportwert==2){
--> setze die Felder 21-30 zurück
}

Mit Zurücksetzen ist gemeint, dass die Inhalte der Felder (eingegebene Daten) gelöscht werden sollen.

1. Wie löscht man die Inhalte eines oder mehrerer Felder und wie kann man das in einer Schleife machen, wenn die Feldnamen gleich sind und sich nur in der angehängten Zahl unterscheiden (Bsp. "Eingabefeld1", "Eingabefeld2", ..., "Eingabefeldxx") ?
2. Wie müsste das als Script aussehen ?

Zusatzfrage:
Wie kann man einzelne Felder von der Markierung/Hervorhebung ausnehmen, wenn man die Felder über den Menüpunkt "Vorhandene Felder markieren" hervorheben lässt ? - Das Problem ist nämlich, dass das die Dropdown-Liste ebenfalls hervorgehoben wird und damit die eingestellte Füllfarbe durch die Hervorhebungsfarbe ersetzt wird (im Gegensatz zu "Schaltflächen", die nicht hervorgehoben werden und somit das eingestellte Erscheinungsbild behalten).
Ich möchte die Dropdown-Liste nämlich als Ersatz für mehrere Buttons einsetzen und daher soll sie nicht mit hervorgehoben werden wenn "Vorhandene Felder markieren" eingeschaltet ist.

Ich hoffe, das ist möglich und jemand weiß dann, wie das geht :-)

Ralf

Benutzeravatar
Merklin
Beiträge: 1857
Registriert: 04.04.2009, 17:03

Formularfelder anhand Dropdownlisten-Auswahl zurücksetzen

Beitrag von Merklin » 16.05.2017, 22:24

Hi,

die Antwort steht in den JavaScript for Acrobat API Referencen.

Code: Alles auswählen

Example 1

Select fields to be reset and reset them.

var fields = new Array();
fields[0] = "P1.OrderForm.Description";
fields[1] = "P1.OrderForm.Qty";
this.resetForm(fields);

The same fields can be reset using only one line of code:

this.resetForm(["P1.OrderForm.Description","P1.OrderForm.Qty"]);

Example 2

This example shows how to reset a whole subtree. For example, if you pass “name” as part of the fields array, all name fields, such as name.first and name.last, are reset.

this.resetForm(["name"]);
VG Merklin

Benutzeravatar
Ralf_AM
Beiträge: 2
Registriert: 06.05.2017, 13:06

Formularfelder anhand Dropdownlisten-Auswahl zurücksetzen

Beitrag von Ralf_AM » 18.05.2017, 22:22

Hallo,

und danke erstmal an Merklin. Das hat mir schonmal ein Stück weitergeholfen.
[Ich benutze übrigens Acrobat Pro DC v2017.009.20044]

Jedoch habe ich 2 Probleme:

1) Das in meinem ersten Beitrag unter "Zusatzfrage" - wie kann ich einzelne Felder von der Markierung/Hervorhebung ausnehmen, wenn man die Felder über den Menüpunkt "Vorhandene Felder markieren" hervorheben lässt ? (In der angehängten Beispieldatei könnt ihr sehen, dass auch die Dropdown-Liste hervorgehoben wird und nicht nur die 'normalen' Felder)

2) Das größere Problem: wenn ich einen Eintrag in der Dropdownliste auswähle, passiert erstmal nichts. Wenn ich dann das 2. Mal einen Eintrag in der Liste auswähle, dann erst wird der 1. Eintrag (den ich beim ersten Klick in die Liste gewählt habe) ausgeführt/benutzt.
Probiert es bitte mal anhand der beigefügten Beispieldatei aus - wählt nach dem Öffnen einen Eintrag aus der Dropdownliste aus und merkt euch den Eintrag (es passiert noch nix) - nun wählt ein 2. Mal einen anderen Eintrag aus der Liste (nun wird der Eintrag vom ersten Klick in die Liste benutzt um die Felder zu füllen).
Wie kann ich es anstellen, dass es richtig funktioniert und sofort bei jedem Klick in die Liste auch der Eintrag benutzt/ausgeführt wird ?

Wenn ihr den Javascript-Code anseht, werdet ihr feststellen, dass ich die Auswahl aus der Dropdownliste anhand des "Exportwertes" treffe - dies ist beabsichtigt. Ich könnte zwar die Werte der Dropdownliste anhand des an die Funktion übergebenen "event.value" prüfen (bei Aufruf der Funktion im benutzerdefinierten Tastatureingabescript), müsste dann aber jedesmal alle Texte der Dropdownliste abfragen.
Im Beispiel werden mit der Dropdownliste Felder gefüllt, aber eigentlich soll die Dropdownliste später einmal Felder bzw. deren Werte löschen. Die Liste soll dann so aussehen:
----------------------------------------------------------------------
[Formularfelder zurücksetzen AUSWAHL...]
Alle Formulardaten zurücksetzen
Alles AUSSER Kundendaten zurücksetzen
Alle Anlagendaten zurücksetzen
Alle Anlagendaten OHNE Module/WR zurücksetzen
JA-/NEIN - Felder zurücksetzen
NUR Module/WR zurücksetzen
Alles NACH Module/WR zurücksetzen
----------------------------------------------------------------------
Die Exportwerte sind fortlaufend von oben nach unten von 0 bis 7

Bei Auswahl eines Eintrages sollen dann die entsprechenden Felder im Formular gelöscht werden. Für jeden der Einträge existiert ein Array, in dem die benötigten Feldnamen hinterlegt sind. Wird nun aus der Dropdownliste der 4. Eintrag ("Alle Anlagendaten zurücksetzen") ausgewählt, dann soll anhand dessen Exportwert (3) das Array "Auswahl3"
zur Löschung der entsprechenden Formularfelder benutzt werden (siehe Bsp. unten)
Der 1. Eintrag in der Liste hat den Wert 0 und soll beim Öffnen der Seite gesetzt werden, so dass in der Dropdownliste sozusagen "nichts" bzw. der Eintrag "[Formularfelder zurücksetzen AUSWAHL...]" ausgewählt ist ( mittels der Codezeile "this.getField("Dropdown2").currentValueIndices=0;" )

Beispiel:

Code: Alles auswählen

var Auswahl1 = {""};
var Auswahl2 = {"Feld23", "Feld24", "Feld30", "Feld32", "Daten3", "Daten4"};
var Auswahl3 = {"AData1", "AData2", "ADate3", "AData4", "AData5", "AData6"};
... usw. bis Auswahl7

this.resetForm("Auswahl" + ChoiceNr);
Ich hoffe mal, irgendein Experte hier weiß Rat und kann mir helfen, denn langsam bin ich am verzweifeln.

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

Antworten