我正在设计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"
,由于某种原因Label1
是Label2 & Label3
仍然可见,selection1
仍然隐藏。
以上代码已粘贴到隐藏文本框的计算(Printscreen 1)部分,我也尝试将其粘贴到下拉列表(Printscreen 2)本身的Validation部分,但似乎没有任何工作。我还尝试使用 Switch Statement ,但因为我的selection1
有多个条件,所以它似乎也不起作用。另请注意我的||
在40 instructions
条件下的区域,总体而言我在25-30个不同的场景中。
非常感谢您的帮助,请提前感谢。
Printscreen 1
Printscreen 2
答案 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 ;
现在,我可以开始显示字段了。