Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
de:create:combine [11.04.2014 11:03] – [Schritt für Schritt] stefanie.herberde:create:combine [28.03.2023 09:36] – [Kombinierte Fragen] admin
Zeile 2: Zeile 2:
  
 Sie haben die Möglichkeit, zu einem Item mehrere Werte abzufragen - z.B. die Bewertung einer Eigenschaft und deren Wichtigkeit. Im Folgenden wird beschrieben, wie Sie diese Funktion am einfachsten verwenden. Sie haben die Möglichkeit, zu einem Item mehrere Werte abzufragen - z.B. die Bewertung einer Eigenschaft und deren Wichtigkeit. Im Folgenden wird beschrieben, wie Sie diese Funktion am einfachsten verwenden.
 +
 +**Hinweis:** Bitte lesen Sie unbedingt auch die Hinweise zu Mobilgeräten weiter unten.
  
 **Beispiel 1**\\ **Beispiel 1**\\
Zeile 9: Zeile 11:
 {{:de:create:scr.combine.example2.png?nolink|Beispiel 2 für eine kombinierte Frage}} {{:de:create:scr.combine.example2.png?nolink|Beispiel 2 für eine kombinierte Frage}}
  
-Bevor Sie eine kombinierte Frage bauen, halte Sie aber bitte einen Moment inne. Gedruckte Fragebögen und Onlinefragebögen unterscheiden sich in wichtigen Punkten -- erstere bieten sehr viel Platz in die Breite, letztere erlauben Filterführung und beliebig viele Seiten. Wenn eine tabellarische Darstellung in der gedruckten Version gut aussieht, dann ist es im Onlinefragebogen oftmals besser, mehrere Fragen zu verwenden. Unter Umständen kann man irrelevante Items (z.B. nicht genutzte Angebote) bei den folgen Teilfragen dann gleich ausblenden.+Bevor Sie eine kombinierte Frage bauen, halten Sie aber bitte einen Moment inne. Gedruckte Fragebögen und Onlinefragebögen unterscheiden sich in wichtigen Punkten -- erstere bieten sehr viel Platz in die Breite, letztere erlauben Filterführung und beliebig viele Seiten. Wenn eine tabellarische Darstellung in der gedruckten Version gut aussieht, dann ist es im Onlinefragebogen oftmals besser, mehrere Fragen zu verwenden. Unter Umständen kann man irrelevante Items (z.B. nicht genutzte Angebote) bei den folgenden Teilfragen dann gleich ausblenden
 + 
 +Beachten Sie bitte auch, dass sich die kombinierten Fragen auf den kleinen Displays von Mobilgeräten oftmals nicht gut darstellen lassen. SoSci Survey kann die Darstellung nur dann dynamisch anpassen, wenn Sie mit der Funktion ''show()'' arbeiten (siehe unten). 
 + 
 +**Hinweis:** Wenn Sie lediglich eine Matrix aus Mehrfachauswahl-Fragen benötigen (Beispiel 2), können Sie statt einer kombinierten Frage auch eine [[:de:create:questions:mc-matrix]] verwenden.
  
 ===== Funktion ===== ===== Funktion =====
Zeile 24: Zeile 30:
  
   - Erstellen Sie zunächst den linken Teil der Frage: Als Fragetyp wählen Sie jenen Typ, den die Eingabe links zeigen soll (im Beispiel 1 wäre das eine 5er-Skala).   - Erstellen Sie zunächst den linken Teil der Frage: Als Fragetyp wählen Sie jenen Typ, den die Eingabe links zeigen soll (im Beispiel 1 wäre das eine 5er-Skala).
-  - Erstellen Sie alle Items bzw. Auswahloptionen für die (ersten) Frage.+  - Erstellen Sie alle Items bzw. Auswahloptionen für die (erste) Frage.
   - Erstellen Sie eine Kopie dieser Frage (ganz oben //Frage duplizieren//).   - Erstellen Sie eine Kopie dieser Frage (ganz oben //Frage duplizieren//).
   - Im Fragenkatalog taucht die Frage nun zweimal auf -- einmal das Original, einmal die Kopie. Die beiden Fragen sind zwar gleich, haben aber verschiedene Kennungen.   - Im Fragenkatalog taucht die Frage nun zweimal auf -- einmal das Original, einmal die Kopie. Die beiden Fragen sind zwar gleich, haben aber verschiedene Kennungen.
-  - Die Kopie -- die "zweite" Frage -- sollte nun als solche markiert werden. Hängen Sie an die //Bezeichnung// z.B. ein "(sekundär)" an.+  - Die Kopie -- die "zweite" Frage -- sollte nun als solche markiert werden. Hängen Sie an die //Beschreibung// z.B. ein "(sekundär)" an.
   - Ändern Sie ggf. Fragetyp und Beschriftungen der zweiten Frage so, wie Sie es für die Eingabefelder rechts wünschen (im obigen Beispiel 1 eine 3er-Skala mit anderen Beschriftungen und ohne grafische Verankerung).   - Ändern Sie ggf. Fragetyp und Beschriftungen der zweiten Frage so, wie Sie es für die Eingabefelder rechts wünschen (im obigen Beispiel 1 eine 3er-Skala mit anderen Beschriftungen und ohne grafische Verankerung).
   - Öffnen Sie nun unter **Fragebogen zusammenstellen** den Fragebogen, in dem die kombinierte Frage erscheinen soll.   - Öffnen Sie nun unter **Fragebogen zusammenstellen** den Fragebogen, in dem die kombinierte Frage erscheinen soll.
Zeile 35: Zeile 41:
 <code php> <code php>
 question('AB01','combine=AB02');  // Kombiniert AB01 mit AB02 question('AB01','combine=AB02');  // Kombiniert AB01 mit AB02
 +</code>
 +
 +__Alternativ__ können Sie die zu kombinieren Fragen auch als Array angeben. Dies ist beispielsweise sinnvoll, wenn die Liste der Fragen dynamisch variiert.
 +
 +<code php>
 +question(['AB01', 'AB02']);  // Kombiniert AB01 mit AB02
 </code> </code>
  
 **Hinweis:** Die Items der zweiten Frage werden so kombiniert, dass ihre Position (!) - nicht Kennung - mit der Position der Items der ersten Frage übereinstimmt. Wenn Sie also z.B. die Items 3, 4 und 5 der ersten Frage stellen, welche die Position 1, 2 und 4 haben, so werden in der zweiten Frage die Items mit Position 1, 2 und 4 gefragt - unabhängig davon, welche Kennung sie haben. **Hinweis:** Die Items der zweiten Frage werden so kombiniert, dass ihre Position (!) - nicht Kennung - mit der Position der Items der ersten Frage übereinstimmt. Wenn Sie also z.B. die Items 3, 4 und 5 der ersten Frage stellen, welche die Position 1, 2 und 4 haben, so werden in der zweiten Frage die Items mit Position 1, 2 und 4 gefragt - unabhängig davon, welche Kennung sie haben.
  
-Es kann also durchaus sein, dass das Item AB01_03 zum Item AB02_01 gehört, wenn die Positionen der Items verändert wurden. Bitte beachten Sie dies bei der Auswertung der Ergebnisse. Ungewollte Verwirrungen vermeiden Sie, indem Sie die Positionen der Items nach dem Kopieren nicht mehr verändern. Die gewünschte Reihenfolge für die Ausgabe können Sie dann immer noch in der Funktion ''[[functions-base#question|question()]]'' festlegen.+Es kann also durchaus sein, dass das Item AB01_03 zum Item AB02_01 gehört, wenn die Positionen der Items verändert wurden. Bitte beachten Sie dies bei der Auswertung der Ergebnisse. Ungewollte Verwirrungen vermeiden Sie, indem Sie die Positionen der Items nach dem Kopieren nicht mehr verändern. Die gewünschte Reihenfolge für die Ausgabe können Sie dann immer noch in der Funktion ''[[:de:create:functions:question|question()]]'' festlegen.
  
 **Hinweis:** Die Randomisierung der Item-Reihenfolge kann man ohne Probleme aktivieren. Allerdings zählt nur die Einstellung der ersten Frage -- die Anordnung der anderen Fragen folgt stets der ersten Frage, damit keine Inkonsistenzen entstehen. **Hinweis:** Die Randomisierung der Item-Reihenfolge kann man ohne Probleme aktivieren. Allerdings zählt nur die Einstellung der ersten Frage -- die Anordnung der anderen Fragen folgt stets der ersten Frage, damit keine Inkonsistenzen entstehen.
Zeile 54: Zeile 66:
 <code php> <code php>
 question( question(
-  'T201', 'combine=T202','combine=T203',+  'T201', 'combine=T202','combine=T203'
 ); );
 </code> </code>
Zeile 93: Zeile 105:
 Wenn man 2 Skalen kombiniert und eine "weiß nicht" Kategorie anbieten möchte, will man i.d.R. nur ein solches Auswahlfeld pro Zeile anzeigen. Das Problem dabei: Die beiden Teilfragen sind voneinander unabhängig, so dass sich das "weiß nicht" nur auf die Skala bezieht, bei der es aktiviert wurde. Wenn man 2 Skalen kombiniert und eine "weiß nicht" Kategorie anbieten möchte, will man i.d.R. nur ein solches Auswahlfeld pro Zeile anzeigen. Das Problem dabei: Die beiden Teilfragen sind voneinander unabhängig, so dass sich das "weiß nicht" nur auf die Skala bezieht, bei der es aktiviert wurde.
  
-Folgendes JavaScript kann man als //HTML-Code// in die Seite einbetten (unter der Frage!). Es sorgt dafür, dass ein Klick auf "weiß nicht" alle anderen Auswahlen in der Zeile entfernt. Das JavaScript ist darauf ausgelegt, dass der "weiß nicht" in einer Skala angezeigt wird -- in dem Code muss man am Ende noch statt AB01 die Kennung jener Frage eintragen, welche die "weiß nicht"-Option trägt.+Folgendes JavaScript kann man in die Seite einbetten. Es sorgt dafür, dass ein Klick auf "weiß nicht" alle anderen Auswahlen in der Zeile entfernt. Das JavaScript ist darauf ausgelegt, dass genau eine der Skalen eine "weiß nicht" Option anbietet. 
 + 
 +  - Legen Sie in einer Rubrik Ihrer Wahl mit **Text hinzufügen** einen neuen Textbaustein an 
 +    //Beschreibung:// z.B. "JavaScript kombinierte Frage" 
 +    - //Darstellung:// "HTML-Code
 +    - //Inhalt:// JavaScript-Code weiter unten 
 +    - Speichern {{:button.save.png?nolink|Speichern}} 
 +  - Tragen Sie im PHP-Code unter dem ''question()''-Befehl folgenden ''show()''-Befehl ein. 
 +    - Ersetzen Sie die Kennung ''AB02'' (zweimal) durch die Kennung jener Frage, welche die "weiß nicht"-Option trägt (entweder eine Skala mit Ausweichoption oder eine Frage vom Typ //Mehrfachauswahl//). 
 +    - Ersetzen Sie die Kennung ''JS01'' durch die Kennung des HTML-Codes (Textes) den Sie soeben noch angelegt haben. 
 + 
 + 
 +<code php> 
 +question('AB01', 'combine=AB02'); 
 +show('JS01', ['%questionID%' => 'AB02']); 
 +</code>
  
 **Wichtig:** Im Datensatz wird für die ersten Fragen in diesem Fall nicht der Code //-1// gespeichert, sondern ein fehlender Wert -- denn die Auswahl wird so entfernt, als wäre sie nie gesetzt worden. Aktivieren Sie für die Teil-Fragen daher keine Antwort-Pflicht. **Wichtig:** Im Datensatz wird für die ersten Fragen in diesem Fall nicht der Code //-1// gespeichert, sondern ein fehlender Wert -- denn die Auswahl wird so entfernt, als wäre sie nie gesetzt worden. Aktivieren Sie für die Teil-Fragen daher keine Antwort-Pflicht.
  
 <code javascript> <code javascript>
-<script src="../script/oFbGeneral.js" type="text/javascript"></script> 
 <script type="text/javascript"> <script type="text/javascript">
 <!-- <!--
 function dkRow(dk) { function dkRow(dk) {
-  var inputs = new Array()+  var inputs = []
-  + 
   // Functions to control the clicks and changes   // Functions to control the clicks and changes
   var checker = function(evt) {   var checker = function(evt) {
-    var input = oFbGeneral.getSender(evt, this);+    var input = SoSciTools.getSender(evt, this);
     if (!input.checked) {     if (!input.checked) {
       return;       return;
Zeile 128: Zeile 154:
     }     }
   }   }
 + 
   // Find surrounding <tr> tag   // Find surrounding <tr> tag
-  var node = dk.parentNode; +  var node = SoSciTools.findContainer(dk, "tr"); 
-  while ((node.nodeType != 1) || (node.tagName != "TR")) { +  if (node == null) { 
-     node = node.parentNode+    throw "No row for DK " + dk.getAttribute("id");
-     if (node == null) { +
-       return; +
-     }+
   }   }
 + 
   // Find all inputs in the row and enable checker function   // Find all inputs in the row and enable checker function
-  inputs2 = node.getElementsByTagName("input");+  var inputs2 = node.getElementsByTagName("input");
   for (var i=0; i<inputs2.length; i++) {   for (var i=0; i<inputs2.length; i++) {
-    oFbGeneral.attachEvent(inputs2[i], "click", checker);+    SoSciTools.attachEvent(inputs2[i], "click", checker);
     // Enlist all non-dk inputs     // Enlist all non-dk inputs
     if (inputs2[i] != dk) {     if (inputs2[i] != dk) {
Zeile 148: Zeile 171:
   }   }
 } }
 +
 dkRow.registerQuestion = function(question) { dkRow.registerQuestion = function(question) {
   // Find all DK inputs (-1) for the specified question   // Find all DK inputs (-1) for the specified question
   // (check all possible items 1 to 99)   // (check all possible items 1 to 99)
 +  var anyFound = false;
   for (var i=1; i<99; i++) {   for (var i=1; i<99; i++) {
     var item = i.toString();     var item = i.toString();
Zeile 157: Zeile 182:
       item = "0" + item;       item = "0" + item;
     }     }
-    var htmlID = question + "_" + item + "-1";  // e.g. AB01_01-1+    // First check for DK option of a scale 
 +    var htmlID = question + "_" + item + "DK";  // e.g. AB01_01DK
     var dk = document.getElementById(htmlID);     var dk = document.getElementById(htmlID);
 +    // Then check for multiple choice question
 +    if (!dk) {
 +      var htmlID = question + "_" + item;  // e.g. AB01_01
 +      var dk = document.getElementById(htmlID);
 +    }
     if (dk) {     if (dk) {
       new dkRow(dk);       new dkRow(dk);
 +      anyFound = true;
     }     }
 +  }
 +  if (!anyFound) {
 +    throw "Not found DK or multiple choice options for " + question;
   }   }
 } }
- +  
- +dkRow.registerQuestion('%questionID%');
-dkRow.registerQuestion('AB01');+
 // --> // -->
 </script> </script>
 </code> </code>
  
-===== Kombination mehrerer Dropdown-Fragen ===== 
  
-Dropdown-Fragen lassen sich auch mithilfe von Tabellen nebeneinander platzieren und somit kombiniert abfragen (siehe dazu auch das Kapitel [[table-layout|Elemente nebeneinander platzieren]]).+===== Text in der Mitte =====
  
-**Beispiel**\\+Wenn man den Text zwischen den Eingabefeldern platzieren möchte, kann man mit dem Parameter ''combine_items'' festlegen, in welcher "Spalte" die Labels angezeigt werden sollen. Im folgenden Beispiel werden sie für die erste Teilfrage (wo sie üblicherweise aktiv sind) abgeschaltet ''%%'combine_items=no'%%'' und für die zweite Teilfrage (wo sie üblicherweise nicht angezeigt werden) aktiviert mittels ''%%'combine_items=yes'%%''.
  
-Beispielsweise will man im Fragebogen einen Zeitraum (Monat/Jahr Monat/Jahr) abfragen und alternativ zum Enddatumg die Auswahlmöglichkeit "bis heute" anbieten.+{{:de:create:scr.combine.sym-scales.png?nolink|Zwei Skalen mit Text in der Mitte}}
  
-{{ :de:create:scr.example.combine.dropdown.jpg?nolink |}}\\ +Wenn die beiden Skalen-Fragen die Kennungen "SK01und "SK02" habenlässt sich die obige Darstellung mit folgendem PHP-Code erreichen.
-Diese Frage lässt sich durch die Kombination vierer Dropdown-Fragen (ST17 bis ST20) sowie einer Mehrfachauswahl-Frage (ST21) erstellen. Um die Antwortoption "bis heuteals Alternative zum Enddatum anzubietenbenötigt man JavaScript, um die gleichzeitige Eingabe eines Enddatums über die Dropdowns zu unterdrücken\\+
  
 +<code php>
 +question('SK01', 'combine_items=no', 'combine=SK02', 'combine_items=yes');
  
-===== Schritt für Schritt =====+pageCSS(' 
 +    table#SK01_tab td.s2col3 { 
 +        text-align: center; 
 +    } 
 +'); 
 +</code>
  
 +**Hinweis:** Der ''question()''-Befehl zählt die ''combine_items''-Parameter einfach ab, es zählt nur deren Reihenfolge, nicht aber, an welcher Stelle sie im Befehl stehen.
  
-  - Legen Sie eine Dropdown-Frage mit den Monaten von Januar bis Dezember an (im Beispiel ST17) und duplizieren Sie diese (Frage ST19). Damit haben Sie eine Frage für die Monatsauswahl des Anfangs- und des Enddatums erzeugt. Ebenso verfahren Sie mit Fragen ST18 und ST20, die dann das Anfangsjahr bzw. das Endjahr in der kombinierten Frage bilden. +**Tipp:** Alternativ zum ''combine_items''-Parameter könnte man auch die Darstellugn der ersten Frage so variierendass die Eingabefelder links und die Beschriftungen rechts angezeigt werden. Dies wird in der Anleitung [[:de:create:best-worst]] beschrieben.
-  - Legen Sie die Antwortoption "bis heute" als eine Frage vom Typ Mehrfachauswahl an. +
-  - Erstellen Sie unter **Fragebogen zusammenstellen** mithilfe von HTMLund PHP-Boxen, die Sie von rechts in den Fragebogen ziehen können, eine Tabelle mit fünf Feldern in einer Zeile (siehe auch [[table-layout|Elemente nebeneinander platzieren]]) und positionieren Sie in jede Zelle mithilfe einer PHP-Box die jeweilige Frage:+
  
-**Erstellen der Tabelle**+Der zweite Teil mit ''pageCSS()'' sorgt dafür, dass die Itemtexte zentriert angezeigt werden. Das vorangestellte ''table#SK01_tab'' stellt sicher, dass die CSS-Anweisung nur für die kombinierte Frage SK01/02 gilt. Die Kennung muss natürlich an die Kennung der Frage angepasst werden. Wenn Sie sonst keine Fragen auf der Seite haben, können Sie dieses Präfix auch weglassen. 
 +===== Kombination mehrerer Dropdown-Fragen =====
  
-Erstellen Sie den Titel der Frage sowie das Tabellen-Gerüst:+Dropdown-Fragen lassen sich mithilfe von Tabellen nebeneinander platzieren und somit kombiniert abfragen (siehe dazu auch das Kapitel [[table-layout|Elemente nebeneinander platzieren]]).
  
-<code html><b>Bitte geben Sie an, wie lange Sie in diesem Unternehmen gearbeitet haben.</b> +Eine Schritt-für-Schritt-Beschreibung zum folgenden Beispiel lesen Sie unter [[table-layout-dropdowns|Dropdowns nebeneinander platzieren]].
-<br><br> +
-<table width="100%" cellspacing="0" cellpadding="0" border="0"> +
-<colgroup> +
-    <col width="20%"> +
-    <col width="20%"> +
-    <col width="20%"> +
-    <col width="20%"> +
-    <col width="20%"> +
-</colgroup> +
-<tr> +
-    <td></code> +
-     +
-**Erste Frage in erste Zelle einfügen**+
  
-Fügen Sie die erste Dropdown-Box aus der Frage nach dem Monat des Arbeitsbeginns einMit den Optionen in der Klammer unterdrücken Sie Fragetext und -erläuterung in Frage ST17Diese wird nicht benötigt, da die kombinierte Frage als ganzes den Fragetitel "Bitte geben Sie an, wie lange Sie in diesem Unternehmen gearbeitet haben." erhält.+{{ :de:create:scr.example.combine.dropdown.jpg?nolink |}}
  
-<code php> 
-question('ST17','show-title=no', 'show-explanation=no', 'spacing=4'); 
-</code> 
-     
-**Tabelle fortsetzen und Fragen einfügen** 
  
-<code html> +===== Mobilgeräte und responsive Darstellung =====
-</td> +
-    <td> +
-</code>+
  
-Frage nach dem Anfangsjahr in nächster Zelle:+Ein relevanter Anteil der Befragten füllt den Fragebögen nicht am PC, sondern auf dem Smartphone aus. Die meisten Fragen in SoSci Survey schalten dann in einen anderen Darstellungsmodus. Deshalb reicht es in aller Regeln, den Fragebogen gegen Ende der Implementierung einmal auf dem Mobilgerät zu testen. Mehr dazu in der Anleitung [[:de:create:smartphones]].
  
-<code php> +==== Lösungsansatz 1 ====
-question('ST18','show-title=no', 'show-explanation=no', 'spacing=4'); +
-</code>+
  
-<code html> +Der Befehl ''show()'' ermöglicht eine responsive Darstellung auch für kombinierte Fragen. Allerdings ist diese Funktion noch in der Testphase. Prüfen Sie daher, ob die Darstellung mit ''show()'' für Ihre Frage gut funktioniert -- und wenn nicht, sagen Sie bitte im Online-Support bescheid.
-</td> +
-    <td> +
-</code>+
  
-Frage nach dem Endmonat:+Die Funktion ''show()'' erwartet die Fragen immer als Array. Eine Trennlinie muss als Parameter in einem zweiten Array festgelegt werden.
  
 <code php> <code php>
-question('ST19','show-title=no', 'show-explanation=no', 'spacing=4');+show( 
 +  ['AB01', 'AB02'], 
 +  ['gap' ='line'
 +);
 </code> </code>
  
-<code html> 
-</td> 
-    <td> 
-</code> 
  
 +==== Lösungsansatz 2 ====
  
-<code php> +Kombinierte Fragen mittels ''question()'' passen das Layout __nicht__ automatisch an die Größe des Bildschirms an (responsive design) und können deshalb auf Mobilgeräten unter Umständen nicht ausgefüllt werden. Hier bietet es sich anfür Mobilgeräte eine alternative Darstellung anzubieten.
-question('ST20','show-title=no''show-explanation=no', 'spacing=4'); +
-</code>+
  
-<code html> +Legen Sie als erstes eine Frage vom Typ "Gerät und übermittelte Variablen" an. In der Frage im Karteireiter //Gerät// setzen Sie ein Kreuzchen bei //Bildschirmgröße//. Nach dem Speichern erhalten Sie zwei Variablen für die Breite und Höhe des Bildschirms in Pixeln. Notieren Sie die Variablen-Kennung für die Bildschirmbreite, welche Sie im Karteireiter //Variablen// finden. Im folgenden Beispiel wird angenommen, dass die Variable die Kennung "GR01_ScW" hat.
-</td> +
-    <td> +
-</code>+
  
-Einfügen der Auswahlalternative ("bis heute") in die letzte Zelle:+Diese Frage platzieren Sie nun auf einer Seite im Fragebogen, die vor der kombinierten Frage kommt. Die Bildschirmbreite wird nämlich (anders als das //Format//, welches aber auf Apple-Geräten oftmals nicht korrekt erkannt wird) erst beim Klick auf "Weitergespeichert.
  
 +Nun können Sie mit ein paar Zeilen [[:de:create:php|PHP-Code]] entweder die kombinierte Frage anzeigen oder die beiden Fragen untereinander (und mit Optimierungen für Mobilgeräte) darstellen. Als Grenze wird hier eine Breite von 600 Pixeln gewählt. Je nach Fragetypen und Layout kann die Wahl einer größeren oder kleineren Zahl sinnvoll sein.
  
 <code php> <code php>
-question('ST21','show-title=no', 'show-explanation=no', 'spacing=4')+if (value('GR01_ScW') > 600) { 
-</code+  // Kombinierte Frage 
- +  question('AB01','combine=AB02'); 
-**Ende der Tabelle** +} else { 
- +  // Einzelne Fragen 
-<code html> +  question('AB01'); 
-</td> +  question('AB02');
-</tr> +
-</table> +
-</code> +
- +
- +
-**Alternativwahl "bis heute"**\\ +
- +
-Fügen Sie ganz ans Ende dieser Fragebogenseite folgendes JavaScript-Fragment als HTML-Baustein ein: +
- +
-<code html> +
-<script src="../script/oFbGeneral.js" type="text/javascript"></script> +
-<script type="text/javascript"> +
-<!-- +
-var tillToday = document.getElementById("ST21_01"); +
-function checkAlternative() { +
-  if (tillToday.checked) { +
-    document.getElementById("ST19").disabled true; +
-    document.getElementById("ST20").disabled = true+
-  } else { +
-    document.getElementById("ST19").disabled = false+
-    document.getElementById("ST20").disabled = false; +
-  }+
 } }
-oFbGeneral.attachEvent(tillToday, "click", checkAlternative); 
-// --> 
-</script> 
 </code> </code>
  
-Dieser Baustein sorgt dafür, dass ST19 und ST20 grau schattiert werden, wenn die Auswahlbox ST21 markiert wird, also nicht gleichzeitig "bis heute" und ein Enddatum angegeben werden kann.+Zur Erklärung des Codes lesen Sie sei auf die Anleitung [[:de:create:php-filters]] verwiesen.
  
  
-** Überprüfung der Eingabe ** 
  
-Wenn Sie einen zusätzlichen Konsistenzcheck einbauen wollen, um zu überprüfen, ob die Eingabe des Teilnehmers sinnvoll ist, tun Sie dies am besten durch einen Filter auf der **nächsten** Fragebogenseite. Um diesen Filter zu programmieren, benötigen Sie die Rückgabewerte Ihrer einzelnen Fragen, die Sie der **Variablenübersicht** entnehmen können. 
- 
-Wenn Sie die Fragen analog zum Beispiel angelegt haben, steht dort beispielsweise Folgendes: 
- 
-  * Für [ST17] und [ST19] jeweils: \\ 1 = Januar \\ 2 = Februar \\ ... \\ 12 = Dezember \\ -9 = nicht beantwortet 
- 
-  * Jahre: Für [ST18] und [ST20] jeweils: \\ 1 = 2014 \\ 2 = 2013 \\ 3 = 2012 \\ ... \\ 35 = 1980 \\ -9 = nicht beantwortet 
- 
-  * Auswahl: Für [ST21]: \\ 1 = nicht gewählt \\ 2 = gewählt 
- 
-Durch einen Filter lässt sich sicherstellen, dass das Austrittsdatum aus dem Unternehmen immer nach dem Eintrittsdatum liegt. Dazu muss entweder ST19 einen späteren Monat als ST18 annehmen, wenn die Person im gleichen Jahr ein- und wieder ausgetreten ist. Der Monat ist hingegen beliebig, sofern das Jahr des Austritts (ST20) zeitlich nach dem Jahr des Eintritts (ST18) liegt. 
-Um der Teilnehmerin bzw. dem Teilnehmer in diesen Fällen einen Fehlertext und die kombinierte Frage erneut anzuzeigen, erstellen Sie zunächst einen Textbausteil im Menü **Textbausteine u. Beschriftung**, den Sie dann später als Fehlermeldung nutzen können (hiert: "DauerF"). 
- 
-<code php> 
-//Jahr des Eintritts liegt nach dem Jahr des Austritts 
-if ((value('ST18')) < (value('ST20'))) { 
-  text('DauerF'); // individuelle Fehlermeldung anzeigen 
-  repeatPage(); // ganze Seite erneut anzeigen 
-} 
- 
-//im gleichen Jahr, aber untersch. Monate 
-if (((value('ST18'))==(value('ST20')) and ((value('ST17'))>(value('ST19'))))) { 
-  text('DauerF'); 
-  repeatPage(); 
-} 
- 
-// Optional: TN hat keine Eingabe getroffen 
-if ((value('ST17') and (value('ST18') == -9))){ 
-  text('DauerF'); 
-  repeatPage(); 
-} 
- 
-</code> 
-     
de/create/combine.txt · Zuletzt geändert: 28.03.2023 09:37 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki