XFA choice item scripting

Unit: HPDFXFARuntime

Een veld met ui.choiceList legt choice-item-methodes bloot tijdens native JavaScript- en FormCalc-event-executie, inclusief herhaalde veld-instances en door script-objecten vastgehouden aliassen

Methodes en properties

LidGedrag
lengthRead-only aantal huidige export-items
selectedIndexEerste geselecteerde zero-based index, of -1 wanneer niets is geselecteerd; een negatieve integer toewijzen wist de selectie, terwijl een out-of-range niet-negatieve waarde of niet-integer gooit voordat hij wordt gewijzigd
getDisplayItem(index)Display-tekst op de index, of null wanneer de index ongeldig is
getSaveItem(index)Export-tekst op de index, of null wanneer de index ongeldig is
boundItem(display)Export-tekst voor de eerst exact matchende display-tekst, of null wanneer geen display-tekst matcht
getItemState(index)Of het item is geselecteerd; een ongeldige index gooit
setItemState(index, selected)Werk de selectie van het item bij; een item selecteren vervangt de vorige selectie voor een single-select-veld en behoudt andere geselecteerde indices voor een multi-select-veld
addItem(display, bound)Voeg een item toe zonder de bestaande geselecteerde items te wijzigen; het tweede argument weglaten gebruikt een lege export-string
deleteItem(index)Verwijder een item en schuif latere indices op met behoud van de identiteit van overlevende item-aliassen; geef false terug voor een ongeldige index
clearItems()Verwijder huidige items en wis de selectie; een expliciet lege runtime-lijst blijft leeg na save en reload
setItems(text, columns)Vervang huidige items vanuit kommagescheiden kolommen en wis de selectie; columns defaultt naar 1, een één-koloms-rij levert zowel display- als export-tekst, en een langere rij gebruikt diens eerste kolom als display-tekst en laatste kolom als export-tekst; geef false terug wanneer het kolomaantal ongeldig is of het invoerveld-aantal niet deelt

Indices zijn integers en worden nooit uit strings gecoerced; item-methodes vragen diens gedocumenteerde argumentaantallen, waarbij het optionele tweede argument door addItem en setItems wordt geaccepteerd

Item-waarden behouden Unicode, leading en trailing spaties, expliciet lege exports en regeleindes; ongeldige XMLcontroletekens en ongepaarde UTF-16-surrogaten worden geweigerd vóór lijstmutatie

Directe status en aliassen

Nieuwe items zijn direct zichtbaar via item-methodes en de property DOM, en een verwijderd item-alias kan niet omleiden naar een overlevend item dat naar de verwijderde index schuift

De lijst vervangen of wissen creëert distincte vervangings-identiteiten; vastgehouden script-object-aliassen naar verwijderde items falen bij latere reads en writes, terwijl overlevende aliassen hetzelfde item blijven aanspreken over event-executies heen

Een directe rawValue-toewijzing, gebonden Data DOM-write, publieke widget-waarde-commit of export-item-scalar-mutatie invalideert gecachte expliciete indices, inclusief toewijzingen die dezelfde raw string behouden

Persistentie en exacte selectie

SaveToBytes schrijft de echte per-instance formulieritems en gesynchroniseerde waarden; een herhaalde instance wijzigen behoudt andere instances en diens data-scopes

Dubbele en lege exports kunnen via exacte indices worden geselecteerd door de item-API; het opgeslagen formulierveld registreert de canonieke indices en matchende raw waarde in optionele attributes in de urn:hotpdf:xfa:runtime-namespace

Standaard XFA-items en -waardenodes blijven onafhankelijk van deze optionele attributes aanwezig; latere waarde-writes invalideren de attributes zodat verouderde indices niet de verkeerde dubbele export kunnen selecteren

De native PDF-consumer schrijft matchende /Opt export/display-paren, exacte /I-indices en /V-strings of -arrays, en bouwt appearances vanuit de geselecteerde display-labels

Transacties en limieten

Itemwijzigingen doen mee aan de bestaande event-transactie en het script-journal; een native waardelimiet-falen, annulering door de aanroeper of onafgehandelde event-exception herstelt opgeslagen XDP, script-lexicale status en bindings vóór een latere retry

Node-allocaties, invoerkolommen, UTF-8-waarden, XML-operatie-payloads, native property-traversal en klonen behouden de geconfigureerde script- en runtime-budgetten en annuleringschecks

Voorbeeld

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");

Voor FormCalc-variabelen die een veld vasthouden in plaats van diens scalar-waarde, gebruik var list = Ref($.parent.choice) vóór het aanroepen van item-methodes

De methode-vocabulaire en kolomargumenten volgen de Adobe Designer Scripting Reference; de runtime gebruikt vervanging-semantics voor setItems, zoals beschreven in Adobe's HTML5 forms scripting support