用于表单的Adobe PDF JavaScript:显示&隐藏标签取决于条件

时间:2016-04-30 20:02:45

标签: javascript forms pdf adobe

我正在设计PDF格式的表单并使用JavaScript验证用户输入,但它似乎不像计划那样工作。请参阅下面的示例代码。

var selection1 = this.getField("textfield1").value;
var selection2= this.getField("textfield2").value;

if (selection1 == "Please select" && selection2 == "Please select")
{
    getField("Label1").display=display.hidden;
    getField("Label2").display=display.hidden;
    getField("Label3").display=display.hidden;
}
else if (selection1 == "Please select" && selection2 == "oranges")
{
    getField("Label1").display=display.hidden;
    getField("Label2").display=display.hidden;
    getField("Label3").display=display.hidden;
}
else if ((selection2 == "oranges") && (selection1 == "two" || "four" || "six" || "eight”) )
{
    getField("Label1").display=display.hidden;
    getField("Label2").display=display.visible;
    getField("Label3").display=display.visible;
}
else if ((selection2 == "oranges") && (selection1 == "three" || "five" || "seven" || "nine") )
{
    getField("Label1").display=display.visible;       
    getField("Label2").display=display.hidden;
    getField("Label3").display=display.hidden;
}

从上面的代码中可以看出,某些标签会隐藏起来并且可见,具体取决于多个下拉列表中的用户选择。

我的第一个问题,在代码selection1 ==的部分中,如果用户选择||,则只有多个"two"第一个条件才有效,即"four",其他所有内容都会被忽略例如,没有任何反应。

我的第二个问题,当用户选择以下组合selection1 = "Please select" & selection2 = "oranges"时,由于某种原因显示Label1

我的第3个问题,例如,如果用户选择了selection2 = "oranges" & selection1 = "three",它会正确显示Label1,但是如果用户将选择更改为selection1 = "two",由于某种原因Label1Label2 & Label3仍然可见,selection1仍然隐藏。

以上代码已粘贴到隐藏文本框的计算(Printscreen 1)部分,我也尝试将其粘贴到下拉列表(Printscreen 2)本身的Validation部分,但似乎没有任何工作。我还尝试使用 Switch Statement ,但因为我的selection1有多个条件,所以它似乎也不起作用。另请注意我的||在40 instructions条件下的区域,总体而言我在25-30个不同的场景中。

非常感谢您的帮助,请提前感谢。

Printscreen 1

enter image description here

Printscreen 2

enter image description here

1 个答案:

答案 0 :(得分:1)

这是一个语法错误...在(Acrobat)JavaScript中,不可能将各种选项分组(使用逻辑OR运算符(||))。

你必须说出每个决定,例如

… selection1 == "Two" || selection1 == "Four" || selection1 == "Six" || …

我想这只是示例文本,但是如果你看一下颜色编码,那么引号就有问题了。事实上,"Eight之后的引用是一个曲引; JavaScript使用直引号。如果您只是将代码复制到编辑窗口中,那将是导致这些问题的原因。

此外,当我遇到这种情况(根据其他选择显示/隐藏字段)时,我通常会先隐藏所有字段,然后相应地显示。使用分层字段名称(例如"Label.1""Label.2""Label.3")可以最轻松地完成此操作。在这种情况下,我要创建一个已知的可见性状态所需要做的就是添加以下代码行:

this.getField("Label").display = display.hidden ;

现在,我可以开始显示字段了。