Anzeige:
Ergebnis 1 bis 11 von 11

Thema: Formularfelder einblenden in Abhängigkeit von Auswahlmenue

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.04.2016
    Beiträge
    6

    Formularfelder einblenden in Abhängigkeit von Auswahlmenue

    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:


    Code:
        \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.hidden; 
    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==’CallCenter’)) 
    { 
    this.getField(’Wessenprofil’).display=display.visible; 
    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==’CustomerCare’)) 
    { 
    this.getField(’Wessenprofil’).display=display.visible; 
    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,borderstyle=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={VeraenderungFunc();}]{Wessen Profil}                             \\\\ 
    \TextField[name=Mailadr,width=7.45cm,height=1.5cm,validate={VeraenderungFunc();}]{Welche Mailadresse}               \\\\ 
    \CheckBox[width=0.5cm, height=0.5cm, name=AgentOne,validate={VeraenderungFunc();}]{Ja oder nein}                    \\\\ 
    \TextField[name=Telber,width=7.45cm,validate={VeraenderungFunc();}]{Bereich Telefon}                                \\\\ 
    \TextField[name=Signatur,width=7.45cm,height=1.5cm,validate={VeraenderungFunc();}]{Welche Signatur}                 \\\\ 
    \TextField[name=Drucker,width=7.45cm,validate={VeraenderungFunc();}]{Welcher Drucker}                               \\\\ 
    \TextField[name=Keyboard,width=7.45cm,validate={VeraenderungFunc();}]{Keyboardlayout}                               \\\\ 
    \TextField[name=Textbau,width=7.45cm,validate={VeraenderungFunc();}]{Welche Textbausteine}                          \\\\ 
    \TextField[name=Favorit,width=7.45cm,validate={VeraenderungFunc();}]{Welche Favoriten}                              \\\\ 
    
    \end{document}

  2. #2
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.326
    Wäre schön, wenn Du Dich an die Regeln halten und selbst angeben würdest, wenn Du ein Crosspost machst …

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.04.2016
    Beiträge
    6
    Bei allem Respekt. Es sind drei unterschiedliche Domains. Warum gibt es drei verschiedene Seiten (http://golatex.de/, http://texwelt.de/ und mrunix.de). Von was reden wir denn hier genau? Muss ich angeben wo ich sonst noch im Internet meine Frage gestellt habe? Vielen Dank für die Hilfe.

  4. #4
    Registrierter Benutzer
    Registriert seit
    20.07.2013
    Beiträge
    193
    Crossposts sind nach den Regelwerken von goLaTeX durch Verlinkung anzukündigen beziehungsweise bei mrunix verboten. Solange du die Verlinkung ordentlich setzt, hat aber auch hier keiner ein Problem damit. Das bedeutet, alle Themen verschiedener Domains mit gleicher Fragestellung müssen zweiseitig verlinkt werden.

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.04.2016
    Beiträge
    6
    Na gut. Da mir die Definition von Crossposts so für Foren nicht geläufig war und ich darunter etwas anderes verstehe (https://de.wikipedia.org/wiki/Crossposting), haben wir die Sache ja geklärt. Vielleicht findet sich ja auch mal jemand, der auch auf meine Fragestellung reagieren kann und mir dazu einen Tipp gibt.

  6. #6
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Da solche Formularfelder AFAIR nicht oder nur beschränkt von jedem PDF-Betrachter berücksichtigt werden: welchen benutzt Du denn? Und ist gewährleistet, daß Deine Zielgruppe den gleichen Betrachter verwendet? Bzw. einen, der die selben Felder in der gleichen Weise anzeigt?

    [OT]
    Zitat Zitat von Johannes_B Beitrag anzeigen
    Crossposts sind nach den Regelwerken von goLaTeX durch Verlinkung anzukündigen beziehungsweise bei mrunix verboten.
    das hast Du jetzt irgendwie rückwärts. Crossposts sind und waren hier, hmm, verlinkungspflichtig, aber nicht verboten (zumindest, seitdem ich hier poste).
    [/OT]

    VG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  7. #7
    Registrierter Benutzer
    Registriert seit
    20.07.2013
    Beiträge
    193
    Ja gut, verboten stimmt nicht ganz. Aber mit den Links sind wir uns wohl einig :- )
    Ich dulde keine doppelten Threads/Posts!
    Crosspostings: Wer die gleiche Frage noch in einem anderen Forum stellt, gibt den direkten Link zu der Frage in seinem Post an (damit die Frage nicht doppelt beantwortet werden muss).

  8. #8
    Registrierter Benutzer
    Registriert seit
    14.04.2016
    Beiträge
    6
    Danke rais. Der PDF-Betrachter, Adobe Acrobat ist zu nahezu 100% überall der gleiche und trägt sogar die gleiche Version. Es muss also nicht mit allen PDF-Betrachtern funktionieren. So wie ich das gesehen und verstanden habe gibt es wohl die Möglichkeit mit dem Adobe Acrobat Distiller dies zu machen. Da ich diese Software nicht habe und es mich wirklich interessiert wie mein Vorhaben mit freien Werkzeugen, im speziellen in Tex, zu machen ist, bin ich für jeden Tipp, Lösungsansätze oder gar einer vollständigen Lösung sehr dankbar. Meine Kenntnisse reichen leider nicht sehr tief in die Javascript Programmierung.

  9. #9
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Dein Beispiel ist zu kompliziert -- die Frage kann man bestimmt mit weniger Feldern formulieren. Es ist auch völlig unklar, welchen Effekt du eigentlich erreichen willst.

  10. #10
    Registrierter Benutzer
    Registriert seit
    14.04.2016
    Beiträge
    6
    Habe das Beispiel gekürzt:

    Code:
    \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.hidden; 
    this.getField(’Mailadr’).display=display.hidden; 
    this.getField(’AgentOne’).display=display.hidden; 
    this.getField(’Telber’).display=display.hidden; 
    %app. alert (’Das Formular wurde ge\u00F6 ffnet .’,3 ); 
    } 
    } 
    
    function VeraenderungFunc() 
    { 
    
    if((event.value==’vccc’)||(event.value==’CallCenter’)) 
    { 
    this.getField(’Wessenprofil’).display=display.visible;
    this.getField(’Mailadr’).display=display.visible;
    this.getField(’AgentOne’).display=display.hidden; 
    this.getField(’Telber’).display=display.hidden; 
    
    this.getField(’Wessenprofil’).value=’Wessenprofil’;
    this.getField(’Mailadr’).value=’Mailadr’;
    
    this.getField(’Wessenprofil’).setFocus();
    } 
    
    elseif((event.value==’cc’)||(event.value==’CustomerCare’)) 
    { 
    this.getField(’Wessenprofil’).display=display.hidden; 
    this.getField(’Mailadr’).display=display.hidden; 
    this.getField(’AgentOne’).display=display.visible; 
    this.getField(’Telber’).display=display.visible; 
    
    this.getField(’AgentOne’).value=’AgentOne’; 
    this.getField(’Telber’).value=’Telber’;
    
    this.getField(’AgentOne’).setFocus(); 
    } 
    
    } 
    \end{insDLJS} 
    
    \begin{document} 
    
    \begin{Form} 
    \renewcommand*{\DefaultOptionsofText}{print,borderstyle=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={VeraenderungFunc();}]{Wessen Profil}                             \\\\ 
    \TextField[name=Mailadr,width=7.45cm,height=1.5cm,validate={VeraenderungFunc();}]{Welche Mailadresse}               \\\\ 
    \CheckBox[width=0.5cm, height=0.5cm, name=AgentOne,validate={VeraenderungFunc();}]{Ja oder nein}                    \\\\ 
    \TextField[name=Telber,width=7.45cm,validate={VeraenderungFunc();}]{Bereich Telefon}                                \\\\ 
    
    \end{document}

    Anbei eine grafische Darstellung was das Formular wann machen soll.

    So sollte es nach der Auswahl im PullDown Menü, wenn VCCC ausgewählt wird aussehen.
    Anhang 6195

    Und so, wenn CC ausgewählt wird.
    Anhang 6196

  11. #11
    Registrierter Benutzer
    Registriert seit
    14.04.2016
    Beiträge
    6
    Habe noch etwas was in die richtige Richtung geht im Netz gefunden. Weiß allerdings nicht wie ich das, mangels javascript Kenntnisse, miteinander kombinieren kann. -> http://tex.stackexchange.com/questio...ugh-javascript

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •