如何在 LaTeX 创建的可填写 PDF 表单中实现条件字段?

如何在 LaTeX 创建的可填写 PDF 表单中实现条件字段?

关注此问题如何在可填充 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 sdkonbluronfocusindextext

但还有一个问题...我也希望标签被隐藏......

在此处输入图片描述

在此处输入图片描述

\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}

相关内容