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 ;
现在,我可以开始显示字段了。
我正在设计 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 ;
现在,我可以开始显示字段了。