XFA-Choice-Item-Scripting

Unit: HPDFXFARuntime

Ein Feld mit ui.choiceList exponiert Choice-Item-Methoden während der nativen JavaScript- und FormCalc-Ereignisausführung, einschließlich wiederholter Feldinstanzen und von Script-Objekten zurückgehaltener Aliasse

Methoden und Properties

MemberVerhalten
lengthSchreibgeschützte Anzahl aktueller Export-Items
selectedIndexErster ausgewählter nullbasierter Index oder -1, wenn nichts ausgewählt ist; jede negative Ganzzahl zuweisen leert die Auswahl, während ein außerhalb liegender nichtnegativer Wert oder eine Nicht-Ganzzahl wirft, bevor sie geändert wird
getDisplayItem(index)Anzeigetext am Index oder null, wenn der Index ungültig ist
getSaveItem(index)Export-Text am Index oder null, wenn der Index ungültig ist
boundItem(display)Export-Text für den ersten exakt passenden Anzeigetext oder null, wenn kein Anzeigetext passt
getItemState(index)Ob das Item ausgewählt ist; ein ungültiger Index wirft
setItemState(index, selected)Die Auswahl des Items aktualisieren; ein Item auswählen ersetzt die vorherige Auswahl bei einem Single-Select-Feld und behält andere ausgewählte Indizes bei einem Multi-Select-Feld
addItem(display, bound)Ein Item anhängen, ohne die bestehenden ausgewählten Items zu ändern; das Weglassen des zweiten Arguments nutzt einen leeren Export-String
deleteItem(index)Ein Item löschen und spätere Indizes verschieben, während die Identität überlebender Item-Aliasse erhalten bleibt; False für einen ungültigen Index
clearItems()Aktuelle Items entfernen und Auswahl leeren; eine explizit leere Runtime-Liste bleibt nach Speichern und Neuladen leer
setItems(text, columns)Aktuelle Items aus kommagetrennten Spalten ersetzen und Auswahl leeren; columns defaultet auf 1, eine Ein-Spalten-Zeile liefert Anzeige- und Export-Text, und eine längere Zeile nutzt ihre erste Spalte als Anzeigetext und letzte Spalte als Export-Text; False, wenn die Spaltenanzahl ungültig ist oder die Anzahl der Eingabefelder nicht teilt

Indizes sind Ganzzahlen und werden nie aus Strings erzwungen; Item-Methoden verlangen ihre dokumentierten Argumentanzahlen, wobei das optionale zweite Argument von addItem und setItems akzeptiert wird

Item-Werte bewahren Unicode, führende und nachfolgende Leerzeichen, explizite leere Exports und Zeilenumbrüche; ungültige XML-Steuerzeichen und ungepaarte UTF-16-Surrogate werden vor der Listenmutation abgelehnt

Sofortiger Zustand und Aliasse

Neue Items sind sofort über Item-Methoden und die Property-DOM sichtbar, und ein gelöschtes Item-Alias kann nicht auf ein überlebendes Item umleiten, das in den gelöschten Index rückt

Das Ersetzen oder Leeren der Liste erzeugt distincte Ersatzidentitäten; zurückbehaltene Script-Objekt-Aliasse zu entfernten Items schlagen bei späteren Lese- und Schreibzugriffen fehl, während überlebende Aliasse weiterhin dasselbe Item über Ereignisausführungen hinweg adressieren

Eine direkte rawValue-Zuweisung, ein gebundener Data-DOM-Schreibzugriff, ein öffentlicher Widget-Wert-Commit oder eine Export-Item-Skalar-Mutation invalidiert zwischengespeicherte explizite Indizes, einschließlich Zuweisungen, die denselben Raw-String bewahren

Persistenz und exakte Auswahl

SaveToBytes schreibt die tatsächlichen Form-Items pro Instanz und die synchronisierten Werte; das Ändern einer wiederholten Instanz bewahrt andere Instanzen und ihre Data-Scopes

Doppelte und leere Exports können über die Item-API nach exakten Indizes ausgewählt werden; das gespeicherte Formfeld hält die kanonischen Indizes und den passenden Raw-Wert in optionalen Attributen im Namespace urn:hotpdf:xfa:runtime fest

Standard-XFA-Items und Wert-Knoten bleiben unabhängig von diesen optionalen Attributen vorhanden; spätere Wert-Schreibzugriffe invalidieren die Attribute, sodass veraltete Indizes nicht den falschen doppelten Export auswählen können

Der native PDF-Consumer schreibt passende /Opt-Export-/Anzeige-Paare, exakte /I-Indizes und /V-Strings oder -Arrays und baut Appearances aus den ausgewählten Display-Labels

Transaktionen und Limits

Item-Änderungen partizipieren an der bestehenden Ereignistransaktion und am Script-Journal; ein nativer Wertlimit-Fehler, eine Aufrufer-Abbruch oder eine unbehandelte Event-Exception stellt gespeichertes XDP, den lexikalischen Script-State und die Bindings vor einer späteren Wiederholung wieder her

Node-Allokationen, Eingabespalten, UTF-8-Werte, XML-Operations-Payloads, native Property-Traversierung und Klonen behalten die konfigurierten Script- und Runtime-Budgets sowie Abbruchprüfungen bei

Beispiel

var list = this.parent.choice;
list.clearItems();
list.addItem("Display A", "same");
list.addItem("Display B", "same");
list.selectedIndex = 1;
if (list.getDisplayItem(list.selectedIndex) !== "Display B")
    throw new Error("Unexpected selected label");

Für FormCalc-Variablen, die ein Feld statt seines Skalarwerts zurückhalten, var list = Ref($.parent.choice) verwenden, bevor Item-Methoden aufgerufen werden

Der Methoden-Vokabular und die Spaltenargumente folgen der Adobe Designer Scripting Reference; die Runtime nutzt Ersetzungssemantik für setItems, wie in Adobes HTML5-Forms-Scripting-Support beschrieben