Javascript 基于组合框选择设置字段

Javascript 基于组合框选择设置字段,javascript,pdf,scripting,acrobat,Javascript,Pdf,Scripting,Acrobat,我不是JavaScript新手,但这是我第一次尝试Acrobat脚本 我试图做的是根据组合框中选择的值更改文本字段 由于我有许多不同的组合框,具有相同的选项集,以及许多应该绑定到这些组合框的文本字段,因此我更喜欢可以对所有这些组合框重用的文档范围函数 我不确定这是否可行,但以下是我的想法 检测组合框何时更改。在提交更改事件时,从中获取导出值,并将其作为相关文本字段的值 以下是步骤: MouseUp事件上的捕获组合框 检测触发事件的组合框 使用数组列表将组合框的名称与其关联的文本字段匹配 使用g

我不是JavaScript新手,但这是我第一次尝试Acrobat脚本

我试图做的是根据组合框中选择的值更改文本字段

由于我有许多不同的组合框,具有相同的选项集,以及许多应该绑定到这些组合框的文本字段,因此我更喜欢可以对所有这些组合框重用的文档范围函数

我不确定这是否可行,但以下是我的想法

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

以下是步骤:

  • MouseUp事件上的捕获组合框
  • 检测触发事件的组合框
  • 使用数组列表将组合框的名称与其关联的文本字段匹配
  • 使用getField()获取文本字段
  • 将文本字段值设置为组合框的导出值
在此方面的任何帮助都将不胜感激。关于Acrobat事件触发器及其工作原理的特别好的来源。我查阅了大量API文档,但没有找到任何相关内容。

找到了! 经过数小时/数天的谷歌搜索,我终于找到了一个有效的解决方案

处理程序函数需要绑定到“击键”事件

处理程序函数应包含:

if(!event.willCommit) {
  this.getField('[field]').value = event.change;
}
if(!event.willCommit) {
  this.getField('[field]').value = event.changeEx;
}
注意:其中“field”是要更新的字段的名称,event.change是在组合框中选择的值

要获取选择的导出值,请使用以下命令:

if(!event.willCommit) {
  this.getField('[field]').value = event.change;
}
if(!event.willCommit) {
  this.getField('[field]').value = event.changeEx;
}
显然,“击键”会在任何时候与UI元素交互时触发。如果不希望在加载文档时执行,请确保在页面加载事件期间将处理程序函数绑定到事件


想法:AcroForms JS(Acrobat的Javascript)有一个严重破坏的事件模型。如果在使用此偶数处理程序时获取combobox的值,它将提供一个过时的值。这不仅需要一个晦涩难懂的黑客来完成,而且几乎没有/没有AcroForms JS社区能够为这些困难的问题提供答案。

如果你能使用jQuery,事情会非常简单-你也可以?不。Acrobat脚本不是常见的JavaScript。如果是的话,我就不会有这个问题了。可以把它想象成一个具有不同DOM的简单JS解释器(PDF中实际上有3个不同的DOM)。那么使用
document.getElementsByTagName
的纯JavaScript就可以了吗?@Shadow不,在Acrobat中,它实际上是这个.getField(“fieldName”)或doc.getField(“fieldName”)。但是,这不是我在这里试图解决的问题。我在问是否有一种方法可以从文档范围订阅字段事件。如果您查看Acrobat的Javascript API,您会发现,虽然语言相同,但体系结构与标准HTMLDOM/JS模型有很大不同。我要找的是在Acrobat开发方面有经验的人,他可能能够回答这个问题。我明白了。。我觉得它更接近“普通”JavaScript抱歉。希望有人能过来!:)伙计。。。。我也走了这么远,但我需要走得更远一点。你能看看这个吗。。。。