Скриптинг элементов выбора XFA
Модуль: HPDFXFARuntime
Поле с ui.choiceList раскрывает методы элементов выбора во время исполнения нативных событий JavaScript и FormCalc, включая повторяющиеся экземпляры полей и псевдонимы, удерживаемые объектами скрипта
Методы и свойства
| Член | Поведение |
|---|---|
length | Количество текущих export-элементов, только для чтения |
selectedIndex | Первый выбранный индекс с нуля или -1, когда ничего не выбрано; присваивание любого отрицательного целого очищает выбор, а значение вне диапазона или нецелое бросает исключение до изменения |
getDisplayItem(index) | Отображаемый текст по индексу или null при некорректном индексе |
getSaveItem(index) | Export-текст по индексу или null при некорректном индексе |
boundItem(display) | Export-текст для первого точного совпадения отображаемого текста или null, если совпадений нет |
getItemState(index) | Выбран ли элемент; некорректный индекс бросает исключение |
setItemState(index, selected) | Обновляет выделение элемента; выбор элемента в поле с единственным выбором заменяет предыдущее выделение, а в поле с множественным выбором сохраняет остальные выбранные индексы |
addItem(display, bound) | Добавляет элемент, не меняя существующие выбранные; без второго аргумента используется пустая export-строка |
deleteItem(index) | Удаляет элемент и сдвигает последующие индексы, сохраняя идентичность выживших псевдонимов; при некорректном индексе возвращает false |
clearItems() | Удаляет текущие элементы и очищает выбор; явно пустой runtime-список остаётся пустым после сохранения и перезагрузки |
setItems(text, columns) | Заменяет текущие элементы из колонок, разделённых запятыми, и очищает выбор; columns по умолчанию 1, строка из одной колонки задаёт и отображаемый, и export-текст, а более длинная строка берёт первую колонку как отображаемый текст и последнюю как export-текст; возвращает false, если число колонок некорректно или не делит число входных полей нацело |
Индексы — целые числа и никогда не приводятся из строк; методам элементов нужно документированное число аргументов, необязательный второй аргумент принимают только addItem и setItems
Значения элементов сохраняют Unicode, начальные и конечные пробелы, явные пустые export-значения и переводы строк; недопустимые управляющие символы XML и непарные суррогаты UTF-16 отклоняются до изменения списка
Немедленное состояние и псевдонимы
Новые элементы сразу видны через методы элементов и DOM свойств, а псевдоним удалённого элемента не может перенаправляться на выживший элемент, сместившийся на освободившийся индекс
Замена или очистка списка создаёт новые идентичности; удерживаемые объектами скрипта псевдонимы удалённых элементов ломаются при последующих чтениях и записях, тогда как выжившие псевдонимы продолжают адресовать тот же элемент между исполнениями событий
Прямое присваивание rawValue, запись в Data DOM, публичная фиксация значения виджета или скалярная мутация export-элемента инвалидирует кэшированные явные индексы, включая присваивания, сохраняющие ту же сырую строку
Сохранение и точный выбор
SaveToBytes записывает фактические элементы формы по каждому экземпляру и синхронизированные значения; изменение повторяющегося экземпляра сохраняет остальные экземпляры и их области данных
Дубликаты и пустые export-значения можно выбирать по точным индексам через API элементов; сохранённое поле формы записывает канонические индексы и совпадающее сырое значение в необязательных атрибутах пространства имён urn:hotpdf:xfa:runtime
Стандартные элементы и узлы значений XFA остаются на месте независимо от этих необязательных атрибутов; последующие записи значения инвалидируют атрибуты, чтобы устаревшие индексы не могли выбрать не тот дубликат export-значения
Нативный потребитель PDF записывает совпадающие пары export/display из /Opt, точные индексы /I и строки или массивы /V и строит appearances из выбранных отображаемых подписей
Транзакции и лимиты
Изменения элементов участвуют в существующей транзакции события и журнале скриптов; сбой нативного лимита значения, отмена вызывающего или необработанное исключение события восстанавливают сохранённые XDP, лексическое состояние скрипта и привязки перед повторной попыткой
Выделения узлов, входные колонки, значения UTF-8, XML-полезные нагрузки операций, нативный обход свойств и клонирование сохраняют настроенные бюджеты скрипта и runtime и проверки отмены
Пример
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");
Для переменных FormCalc, удерживающих само поле, а не его скалярное значение, используйте var list = Ref($.parent.choice) перед вызовом методов элементов
Словарь методов и аргументы-колонки следуют Adobe Designer Scripting Reference; runtime использует семантику замены для setItems, как описано в поддержке скриптинга HTML5-форм Adobe