Adobe PDF JavaScript for Forms:根据条件显示和隐藏标签

Adobe PDF JavaScript for Forms: showing & hiding labels depending on the conditions

我正在设计 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",如果用户选择 [=15],其他所有条件都将被忽略=] 例如,没有任何反应。

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

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

以上代码已粘贴到隐藏文本框的计算(Printscreen 1)部分,我也尝试将其粘贴到下拉列表(Printscreen 2)本身的验证部分,但似乎没有任何内容在职的。我也尝试过使用 Switch Statement 但因为我的 selection1 有多个条件,它似乎也不起作用。另请注意,我的 selection1 有 40 个 || 条件,总的来说我有 25-30 个不同的场景。

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

打印屏幕 1

打印屏幕 2

这是一个语法错误……在 (Acrobat) JavaScript 中,无法像此处那样对各种选项进行分组(使用逻辑 OR 运算符 (||))。

你必须把每一个决定都说出来,比如

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

我想这只是这里的示例文本,但如果您查看颜色编码,就会发现引号有问题。实际上,"Eight 后面的引号是一个弯引号; JavaScript 使用直引号。如果您只是将代码复制到这里的编辑 window 中,那将是导致这些问题的原因。

另外,当我遇到这种情况(showing/hiding 其他选择的字段),我一般都是先全部隐藏,再相应显示。这通过使用分层字段名称(例如 "Label.1""Label.2""Label.3")最容易实现。在这种情况下,要创建一个已知的可见状态,我所要做的就是添加这行代码:

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

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