joshlukas
18-04-2016, 15:30
Hallo liebe Entwickler.
Im Moment bin ich dabei ein Formular zu erzeugen. Soweit so gut und es funktioniert wie ich es mir vorstelle. Nun mein Problem. Es sind mehrere Formulare die sich in nur wenigen Feldern unterscheiden. Mein Vorhaben ist es, wird ein bestimmtes Feld ausgefüllt, sollen bestimmte Felder verborgen werden bzw. andere erscheinen. Mit hyperref und insdljs sollte es möglich sein. Ich weißt allerdings nicht wie genau. Kann mir jemand bitte einen Rat geben?
Vereinfacht gesagt: Es gibt Formular A, Formular B und Formular C. Jedes dieser Formulare haben zum Teil andere Felder zum Ausfüllen. Ich möchte alle drei Formulare in ein/e Formular/PDF vereinen. In Abhängigkeit einer Eingabe (Pulldown Menü) sollen weitere Felder sichtbar bzw. unsichtbar werden.
Anbei ein Minimalbeispiel meiner tex Datei:
\documentclass[
12pt, % Schriftgröße
a4paper, % Papierformat
oneside, % einseitiges Dokument
final % Status des Dokuments (final/draft)
]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage[pdftex]{eqexam}
\usepackage[pdftex]{insdljs}
\begin{insDLJS}[Daten]{Daten}{Auswertung}
var done=0;
function StartFunc(){
if(!done){
done=1;
this.getField(’Wessenprofil’).display=display.hidd en;
this.getField(’Mailadr’).display=display.hidden;
this.getField(’AgentOne’).display=display.hidden;
this.getField(’Telber’).display=display.hidden;
this.getField(’Signatur’).display=display.hidden;
this.getField(’Drucker’).display=display.hidden;
this.getField(’Keyboard’).display=display.hidden;
this.getField(’Textbau’).display=display.hidden;
this.getField(’Favorit’).display=display.hidden;
%app. alert (’Das Formular wurde ge\u00F6 ffnet .’,3 );
}
}
function VeraenderungFunc()
{
if((event.value==’vccc’)||(event.value==’CallCente r’))
{
this.getField(’Wessenprofil’).display=display.visi ble;
this.getField(’Mailadr’).display=display.visible;
this.getField(’AgentOne’).display=display.visible;
this.getField(’Telber’).display=display.visible;
this.getField(’Signatur’).display=display.visible;
this.getField(’Drucker’).display=display.visible;
this.getField(’Keyboard’).display=display.visible;
this.getField(’Textbau’).display=display.visible;
this.getField(’Favorit’).display=display.visible;
this.getField(’Wessenprofil’).value=’Wessenprofil’ ;
this.getField(’Mailadr’).value=’Mailadr’;
this.getField(’AgentOne’).value=’AgentOne’;
this.getField(’Telber’).value=’Telber’;
this.getField(’Signatur’).value=’Signatur’;
this.getField(’Drucker’).value=’Drucker’;
this.getField(’Keyboard’).value=’Keyboard’;
this.getField(’Textbau’).value=’Textbau’;
this.getField(’Favorit’).value=’Favorit’;
this.getField(’Wessenprofil’).setFocus();
}
elseif((event.value==’cc’)||(event.value==’Custome rCare’))
{
this.getField(’Wessenprofil’).display=display.visi ble;
this.getField(’Mailadr’).display=display.visible;
this.getField(’AgentOne’).display=display.hidden;
this.getField(’Telber’).display=display.hidden;
this.getField(’Signatur’).display=display.hidden;
this.getField(’Drucker’).display=display.hidden;
this.getField(’Keyboard’).display=display.hidden;
this.getField(’Textbau’).display=display.hidden;
this.getField(’Favorit’).display=display.hidden;
this.getField(’Wessenprofil’).value=’Wessenprofil’ ;
this.getField(’Mailadr’).value=’Mailadr’;
this.getField(’AgentOne’).value=’AgentOne’;
this.getField(’Telber’).value=’Telber’;
this.getField(’Signatur’).value=’Signatur’;
this.getField(’Drucker’).value=’Drucker’;
this.getField(’Keyboard’).value=’Keyboard’;
this.getField(’Textbau’).value=’Textbau’;
this.getField(’Favorit’).value=’Favorit’;
this.getField(’Wessenprofil’).setFocus();
}
}
\end{insDLJS}
\begin{document}
\begin{Form}
\renewcommand*{\DefaultOptionsofText}{print,border style=U}
\begin{tabular}{p{7.45cm}p{7.45cm}}
Vorname & Nachname \\
\TextField[name=Vorname, width=7.45cm]{} & \TextField[name=Nachname,width=7.45cm]{} \\
& \\
Personalnummer & \\
\TextField[name=Personalnummer, width=7.45cm]{} & \\
& \\ \\ \hline \\
\textbf{Bei Neueinstellung} & \\
Abteilung & Ab \\
\ChoiceMenu[combo,name=Einsatzort,width=7.45cm]{} & \\
& \TextField[name=Abdatum,width=7.45cm]{} \\
& \\ \\ \hline \\
\textbf{Bei Abteilungswechsel} & \\
Abteilung jetzt & Bis \\
\TextField[name=Einsatzortjetzt, width=7.45cm]{} & \TextField[name=Bis,width=7.45cm]{} \\
& \\
Abteilung dann & Ab \\
\TextField[name=Einsatzortdann, width=7.45cm]{} & \TextField[name=Abdatum,width=7.45cm]{} \\
& \\ \\ \hline \\
\textbf{Bei Austritt aus dem Unternehmen} & \\
Letzter Tag der Beschäftigung & \\
\TextField[name=Letztertag, width=7.45cm]{} & \\
& \\
\end{tabular}
\end{Form}
\TextField[name=Wessenprofil,width=7.45cm,validate={Veraender ungFunc();}]{Wessen Profil} \\\\
\TextField[name=Mailadr,width=7.45cm,height=1.5cm,validate={V eraenderungFunc();}]{Welche Mailadresse} \\\\
\CheckBox[width=0.5cm, height=0.5cm, name=AgentOne,validate={VeraenderungFunc();}]{Ja oder nein} \\\\
\TextField[name=Telber,width=7.45cm,validate={VeraenderungFun c();}]{Bereich Telefon} \\\\
\TextField[name=Signatur,width=7.45cm,height=1.5cm,validate={ VeraenderungFunc();}]{Welche Signatur} \\\\
\TextField[name=Drucker,width=7.45cm,validate={VeraenderungFu nc();}]{Welcher Drucker} \\\\
\TextField[name=Keyboard,width=7.45cm,validate={VeraenderungF unc();}]{Keyboardlayout} \\\\
\TextField[name=Textbau,width=7.45cm,validate={VeraenderungFu nc();}]{Welche Textbausteine} \\\\
\TextField[name=Favorit,width=7.45cm,validate={VeraenderungFu nc();}]{Welche Favoriten} \\\\
\end{document}
Im Moment bin ich dabei ein Formular zu erzeugen. Soweit so gut und es funktioniert wie ich es mir vorstelle. Nun mein Problem. Es sind mehrere Formulare die sich in nur wenigen Feldern unterscheiden. Mein Vorhaben ist es, wird ein bestimmtes Feld ausgefüllt, sollen bestimmte Felder verborgen werden bzw. andere erscheinen. Mit hyperref und insdljs sollte es möglich sein. Ich weißt allerdings nicht wie genau. Kann mir jemand bitte einen Rat geben?
Vereinfacht gesagt: Es gibt Formular A, Formular B und Formular C. Jedes dieser Formulare haben zum Teil andere Felder zum Ausfüllen. Ich möchte alle drei Formulare in ein/e Formular/PDF vereinen. In Abhängigkeit einer Eingabe (Pulldown Menü) sollen weitere Felder sichtbar bzw. unsichtbar werden.
Anbei ein Minimalbeispiel meiner tex Datei:
\documentclass[
12pt, % Schriftgröße
a4paper, % Papierformat
oneside, % einseitiges Dokument
final % Status des Dokuments (final/draft)
]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage[pdftex]{eqexam}
\usepackage[pdftex]{insdljs}
\begin{insDLJS}[Daten]{Daten}{Auswertung}
var done=0;
function StartFunc(){
if(!done){
done=1;
this.getField(’Wessenprofil’).display=display.hidd en;
this.getField(’Mailadr’).display=display.hidden;
this.getField(’AgentOne’).display=display.hidden;
this.getField(’Telber’).display=display.hidden;
this.getField(’Signatur’).display=display.hidden;
this.getField(’Drucker’).display=display.hidden;
this.getField(’Keyboard’).display=display.hidden;
this.getField(’Textbau’).display=display.hidden;
this.getField(’Favorit’).display=display.hidden;
%app. alert (’Das Formular wurde ge\u00F6 ffnet .’,3 );
}
}
function VeraenderungFunc()
{
if((event.value==’vccc’)||(event.value==’CallCente r’))
{
this.getField(’Wessenprofil’).display=display.visi ble;
this.getField(’Mailadr’).display=display.visible;
this.getField(’AgentOne’).display=display.visible;
this.getField(’Telber’).display=display.visible;
this.getField(’Signatur’).display=display.visible;
this.getField(’Drucker’).display=display.visible;
this.getField(’Keyboard’).display=display.visible;
this.getField(’Textbau’).display=display.visible;
this.getField(’Favorit’).display=display.visible;
this.getField(’Wessenprofil’).value=’Wessenprofil’ ;
this.getField(’Mailadr’).value=’Mailadr’;
this.getField(’AgentOne’).value=’AgentOne’;
this.getField(’Telber’).value=’Telber’;
this.getField(’Signatur’).value=’Signatur’;
this.getField(’Drucker’).value=’Drucker’;
this.getField(’Keyboard’).value=’Keyboard’;
this.getField(’Textbau’).value=’Textbau’;
this.getField(’Favorit’).value=’Favorit’;
this.getField(’Wessenprofil’).setFocus();
}
elseif((event.value==’cc’)||(event.value==’Custome rCare’))
{
this.getField(’Wessenprofil’).display=display.visi ble;
this.getField(’Mailadr’).display=display.visible;
this.getField(’AgentOne’).display=display.hidden;
this.getField(’Telber’).display=display.hidden;
this.getField(’Signatur’).display=display.hidden;
this.getField(’Drucker’).display=display.hidden;
this.getField(’Keyboard’).display=display.hidden;
this.getField(’Textbau’).display=display.hidden;
this.getField(’Favorit’).display=display.hidden;
this.getField(’Wessenprofil’).value=’Wessenprofil’ ;
this.getField(’Mailadr’).value=’Mailadr’;
this.getField(’AgentOne’).value=’AgentOne’;
this.getField(’Telber’).value=’Telber’;
this.getField(’Signatur’).value=’Signatur’;
this.getField(’Drucker’).value=’Drucker’;
this.getField(’Keyboard’).value=’Keyboard’;
this.getField(’Textbau’).value=’Textbau’;
this.getField(’Favorit’).value=’Favorit’;
this.getField(’Wessenprofil’).setFocus();
}
}
\end{insDLJS}
\begin{document}
\begin{Form}
\renewcommand*{\DefaultOptionsofText}{print,border style=U}
\begin{tabular}{p{7.45cm}p{7.45cm}}
Vorname & Nachname \\
\TextField[name=Vorname, width=7.45cm]{} & \TextField[name=Nachname,width=7.45cm]{} \\
& \\
Personalnummer & \\
\TextField[name=Personalnummer, width=7.45cm]{} & \\
& \\ \\ \hline \\
\textbf{Bei Neueinstellung} & \\
Abteilung & Ab \\
\ChoiceMenu[combo,name=Einsatzort,width=7.45cm]{} & \\
& \TextField[name=Abdatum,width=7.45cm]{} \\
& \\ \\ \hline \\
\textbf{Bei Abteilungswechsel} & \\
Abteilung jetzt & Bis \\
\TextField[name=Einsatzortjetzt, width=7.45cm]{} & \TextField[name=Bis,width=7.45cm]{} \\
& \\
Abteilung dann & Ab \\
\TextField[name=Einsatzortdann, width=7.45cm]{} & \TextField[name=Abdatum,width=7.45cm]{} \\
& \\ \\ \hline \\
\textbf{Bei Austritt aus dem Unternehmen} & \\
Letzter Tag der Beschäftigung & \\
\TextField[name=Letztertag, width=7.45cm]{} & \\
& \\
\end{tabular}
\end{Form}
\TextField[name=Wessenprofil,width=7.45cm,validate={Veraender ungFunc();}]{Wessen Profil} \\\\
\TextField[name=Mailadr,width=7.45cm,height=1.5cm,validate={V eraenderungFunc();}]{Welche Mailadresse} \\\\
\CheckBox[width=0.5cm, height=0.5cm, name=AgentOne,validate={VeraenderungFunc();}]{Ja oder nein} \\\\
\TextField[name=Telber,width=7.45cm,validate={VeraenderungFun c();}]{Bereich Telefon} \\\\
\TextField[name=Signatur,width=7.45cm,height=1.5cm,validate={ VeraenderungFunc();}]{Welche Signatur} \\\\
\TextField[name=Drucker,width=7.45cm,validate={VeraenderungFu nc();}]{Welcher Drucker} \\\\
\TextField[name=Keyboard,width=7.45cm,validate={VeraenderungF unc();}]{Keyboardlayout} \\\\
\TextField[name=Textbau,width=7.45cm,validate={VeraenderungFu nc();}]{Welche Textbausteine} \\\\
\TextField[name=Favorit,width=7.45cm,validate={VeraenderungFu nc();}]{Welche Favoriten} \\\\
\end{document}