来自 hyperref 和条件语句的 ChoiceMenu

来自 hyperref 和条件语句的 ChoiceMenu

假设有 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}

相关内容