根据ComboBox选择设置字段

时间:2011-05-13 22:57:22

标签: javascript pdf scripting acrobat

我不是JavaScript的新手,但这是我第一次涉足Acrobat Scripting。

我要做的是根据在comboBox中选择的值更改文本字段。

由于我有许多不同的组合框具有相同的选项集,并且许多文本字段应该绑定到那些,我更喜欢可以重复使用的文档范围函数。

我不确定这是否可行,但这就是我在想的......

检测组合框何时更改。在更改事件提交时,从中获取导出值,并使其成为相关文本字段的值。

以下是步骤:

  • 捕获组合框onmouseup事件
  • 检测哪个组合框触发了事件
  • 使用数组列表
  • 将组合框的名称与其关联的文本字段相匹配
  • 使用getField()来获取文本字段
  • 将文本字段值设置为组合框的导出值

任何有关此的帮助将不胜感激。关于Acrobat事件触发器以及它们如何工作的特别好的来源。我已经浏览了大量的API文档,但在其上找不到任何内容。

1 个答案:

答案 0 :(得分:4)

找到了它!

经过Google搜索的详尽时间/天后,我终于找到了一个有效的解决方案。

处理函数需要绑定到'Keystroke'事件。

处理程序功能应包含:

if(!event.willCommit) {
  this.getField('[field]').value = event.change;
}

注意:'field'是要更新的字段的名称,event.change是在组合框中选择的值。

要获取所选内容的导出值,请使用以下内容:

if(!event.willCommit) {
  this.getField('[field]').value = event.changeEx;
}

显然,只要与UI元素进行交互,就会触发“击键”。如果您不希望在文档加载时执行它,请确保在页面加载事件期间将处理函数绑定到事件。

思考:AcroForms JS(适用于Acrobat的Javascript)有一个严重破坏的事件模型。如果你在使用这个偶数处理程序时得到组合框的值,它将提供一个陈旧的值。它不仅需要一个模糊的黑客来使它工作,而且很少/没有AcroForms JS社区为这些难题提供答案。