假设有 2 个 ChoiceMenu 框,如果用户在“ChoiceMenu1”中选择一个元素,则根据某些条件在“ChoiceMenu2”中插入元素。我的目标是有一个包含 1980-2022 年的 ChoiceMenu,它有 42 个元素。如果我在“ChoiceMenu1”中选择 1983 年,我希望“ChoiceMenu2”显示例如 1983 年发行的电影。这种功能可能吗?
ChoiceMenu1(下拉列表)中填充了从 1980 年到 2022 年的元素(行),这意味着一个元素是 1980 年,下一个元素是 1981 年,依此类推。ChoiceMenu2 从一开始就是空的,我希望 ChoiceMenu2 中填充的元素取决于我从 ChoiceMenu1 中选择的元素。如下所示
看看下面的数据
-----------开始文件---------
1980 年,《象人》;
1981 年,大西洋城;
1980年,《普通人》;
----------文件结束 -------------
如果我在 ChoiceMenu1 中选择 1980 年 -> 将使用元素“象人”(第一个元素)和“普通人”(第二个元素)填充 ChoiceMenu2。
这有可能与 pdf 进行这种交互吗?
答案1
Javascript 可以做到这一点。
应该是不言自明的
\documentclass[a4paper]{scrartcl}
\usepackage[pdftex]{insdljs}
\begin{insDLJS}[aeeae]{aeeae}{JavaScript auf Document Level}
function doStuff()
{
var Year1 =
[
["Star Wars 4","a"],["Star Wars 5","b"],["Star Wars 6","c"]
];
var Year2 =
[
["Star Wars 1","a"],["Star Wars 2","b"],["Star Wars 3","c"]
];
if(this.getField("CMYear").value == "Year1")
{
this.getField("CMFilm").setItems(Year1);
this.getField("CMFilm").currentValueIndices = 0;
}
else if(this.getField("CMYear").value == "Year2")
{
this.getField("CMFilm").setItems(Year2);
this.getField("CMFilm").currentValueIndices = 0;
}
}
\end{insDLJS}
\begin{document}
\begin{Form}
\ChoiceMenu[name=CMYear,combo,calculate={doStuff()}]{Year:}{Year1,Year2}\\
\\
\ChoiceMenu[name=CMFilm,combo,calculate={doStuff()}]{Film:}{pls select Year}
\end{Form}
\end{document}