I’m not a newb to JavaScript but this is my first foray into Acrobat Scripting.
What I’m trying to do is change a text field based on the value selected in a comboBox.
Since I have many different comboboxes with the same set of options, and many text fields that are supposed to be bound to those, I would prefer a document scope function that could be reused for all of those.
I’m not sure if this is possible but here’s what I’m thinking…
Detect when a combo box is changed. On the change event submission, take the export value from that and make it the value for the related text field.
Here’s the steps:
- capture combo box onmouseup event
- detect which combo box triggered the event
- match up the name of the combo box to its associated text field using an array listing
- use a getField() to fetch the text field
- set the text fields value to be the export value of the combo box
Any help with this would be appreciated. Especially good sources about Acrobat event triggers and how they work. I have been through a great deal of the API documentation and can’t find anything on it.
Found it!
After exhaustive hours/days of Googling I finally found a solution that works.
The handler function needs to be bound to the ‘Keystroke’ event.
The handler function should contain:
Note: Where ‘field’ is the name of the field being updated and event.change is the value selected in the combobox.
To fetch the export value of the selection use the following:
Apparently, ‘Keystroke’ is fired any time a UI element is interacted with. If you don’t want it to execute when the document loads, be sure to bind the handler function to the event during the page load event.
Thoughts: AcroForms JS (Javascript for Acrobat) has a seriously broken event model. If you were to get the value of the combobox while using this even handler it would serve up a stale value. Not only does it take an obscure hack to make it work but there is little/no AcroForms JS community to provide answers to hard questions like these.