在LiveCycle Designer中单击按钮时隐藏主页面元素

时间:2014-03-21 17:54:57

标签: javascript livecycle livecycle-designer

这似乎很简单,但我还没有找到明确答案。

我在母版页中有一个带有全局绑定的下拉框。我想要一个单独的按钮,位于设计内容区域(主页面),单击时,告诉主页面中下拉框的任何实例隐藏,或者是可见等等。

在SOM编辑器中,下拉框告诉我它的层次结构是:

form1.MasterPages.Page1.Header.projectSize

在按钮的JavaScript上点击我尝试过:

xfa.resolveNodes("form1.MasterPages.Page1[*].Header.projectSize").presence="hidden";

var nodes = form1.MasterPages.resolveNodes("Page1[*].Header");
var len = nodes.length;
for(var i = 0; i < len; i++) {
  nodes.item(i).projectSize.presence="hidden";
}

以及xfa.resolveNodes("之前form1.Master...的类似脚本,所有这些都不起作用。

是否可以定位母版页面元素,如果是,那么正确的语法是什么?

提前谢谢。

编辑*

因此,仔细观察,var节点方法实际上是有效的。但它仅在第二次单击按钮时有效。单击按钮时运行的其他脚本工作正常,但是再次单击按钮时,“母版页”下拉列表仅“隐藏”...显然现在是这个问题。

1 个答案:

答案 0 :(得分:1)

我已经弄明白了我的问题。不确定这是否可以帮助其他人,但这是我的解决方案,虽然我不完全理解它的工作原理。

要在主页面的每个潜在迭代上定位下拉元素,然后隐藏每个迭代,这个JavaScript在文档正文中的按钮中工作(我相信它与我最初声明的相同):

var nodes = form1.MasterPages.resolveNodes("Page1[*].Header");
var len = nodes.length;
for (var i = 0; i < len; i++){
  nodes.item(i).projectSize.presence="hidden";
}

在撕掉与其一起运行的其他脚本时,我发现另一个表和我用来隐藏它的脚本是Master Page下拉元素需要两次点击才能正常运行的原因。 / p>

罪魁祸首表名为notesTable,位于名为GrandTotals的子表单中。以下脚本与其他脚本一起正常工作,但是在母版页引用脚本发挥作用后失败GrandTotals.notesTable.presence="hidden";

我发现在第一次点击时让所有内容协同工作的解决方法是引用notesTable中的每个单元格项目并单独隐藏它们:

form1.GrandTotals.notesTable.HeaderRow.notesHeader.presence="hidden";
form1.GrandTotals.notesTable.Row1.notes.presence="hidden";

我只有两个目标单元,所以它不是很大,但我可以想象这个解决方案变得混乱了许多行和单元格等。无论哪种方式,冗余,更长,黑客修复仍然是一个修复

我仍然不确定为什么会出现这个问题,以及为什么会解决这个问题。我还有一些其他引用JavaScripts的问题,这些问题不是特定的#34;足够,并且必须更改以引用层次结构的更多冗余特定位才能正常工作。这些问题一周前没有发生,现在它们已经成为主要的障碍。我认为它可能与某种PDF /阅读器后台更新有关,但我无法确定。

无论如何,这是对随机问题的随机修复,但它可能会为其他有类似混淆的人解决问题。