![如何在 LaTeX 创建的可填写 PDF 表单中实现条件字段?](https://linux22.com/image/474940/%E5%A6%82%E4%BD%95%E5%9C%A8%20LaTeX%20%E5%88%9B%E5%BB%BA%E7%9A%84%E5%8F%AF%E5%A1%AB%E5%86%99%20PDF%20%E8%A1%A8%E5%8D%95%E4%B8%AD%E5%AE%9E%E7%8E%B0%E6%9D%A1%E4%BB%B6%E5%AD%97%E6%AE%B5%EF%BC%9F.png)
关注此问题如何在可填充 pdf 的 `\TextField` 中动态格式化带有千位分隔符的数字? 我现在的目标是根据用户在下拉菜单中的选择显示或隐藏某些字段。例如,如果用户从下拉菜单中选择“单只股票”,则应显示一个用于输入“标的资产名称”的字段。同样,对于其他选择,如“指数减值”或“股票减值”,应显示不同的字段。
平均能量损失
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\begin{Form}
\ChoiceMenu[combo,name=typeSousJacent,width=10cm]{}{%
Single stock,
Index decrement,
Stock decrement,
} \\
Nom du sous-jacent: \TextField[name=sousJacent,width=5cm]{} \\
Ticker: \TextField[name=ticker]{} \\
Decrement: \CheckBox[name=decrementyesno,width=1em]{} \\
Niveau de decrement: \TextField[name=decrement]{}
\end{Form}
\end{document}
我尝试了以下方法,但没有成功
\documentclass{article}
\usepackage{hyperref}
\usepackage[pdftex]{insdljs}
\begin{insDLJS}[showhidejs]{showhide}{Show/Hide Fields}
function updateFields() {
var typeSousJacentValue = this.getField("typeSousJacent").value;
this.getField("sousJacent").display = (typeSousJacentValue == "Single stock") ? display.visible : display.hidden;
this.getField("ticker").display = (typeSousJacentValue == "Single stock" || typeSousJacentValue == "Stock decrement") ? display.visible : display.hidden;
}
\end{insDLJS}
\begin{document}
\begin{Form}
\ChoiceMenu[combo,name=typeSousJacent,onchange={updateFields();},width=10cm]{}{% No action here when opend on acrobat
Single stock,
Index decrement,
Stock decrement,
} \\
Nom du sous-jacent: \TextField[name=sousJacent,width=5cm]{} \\
Ticker: \TextField[name=ticker]{} \\
Decrement: \CheckBox[name=decrementyesno,width=1em]{} \\
Niveau de decrement: \TextField[name=decrement]{}
\end{Form}
\end{document}
有没有办法根据下拉选择动态显示/隐藏字段?
答案1
经过一番努力,我发现中实际上并不存在 和onChoice()
。但是可以使用和。组合框中的而不是条件简化了一切...onchange()
adobe pdf sdk
onblur
onfocus
index
text
但还有一个问题...我也希望标签被隐藏......
\documentclass{article}
\usepackage{hyperref}
\usepackage[pdftex]{insdljs}
\begin{insDLJS}[showhidejs]{showhide}{Show/Hide Fields}
function updateFields() {
var typeSousJacentIndex = this.getField("typeSousJacent").currentValueIndices;
// Mask these fields by default
this.getField("decrementyesno").display = display.hidden;
this.getField("decrement").display = display.hidden;
// Display fields based on selection
if(typeSousJacentIndex == 1 || typeSousJacentIndex == 2) { // Single stock ou Stock decrement
this.getField("decrementyesno").display = display.visible;
this.getField("decrement").display = display.visible;
}
}
\end{insDLJS}
\begin{document}
\begin{Form}
\ChoiceMenu[combo,name=typeSousJacent,width=10cm,onfocus={updateFields();},onblur={updateFields();}]{}{
Single stock,
Index decrement,
Stock decrement,
}
\TextField[name=sousJacent,width=5cm]{Nom du sous-jacent:}
\TextField[name=ticker]{Ticker :}
\CheckBox[name=decrementyesno,width=1em]{Decrement:}
\TextField[name=decrement,width=2cm]{Niveau de decrement:}
\end{Form}
\end{document}