Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
de:create:combine [29.11.2011 00:07] – Link admin | de:create:combine [28.03.2023 09:36] – [Kombinierte Fragen] admin | ||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
Sie haben die Möglichkeit, | Sie haben die Möglichkeit, | ||
+ | |||
+ | **Hinweis: | ||
**Beispiel 1**\\ | **Beispiel 1**\\ | ||
Zeile 9: | Zeile 11: | ||
{{: | {{: | ||
- | Bevor Sie eine kombinierte Frage bauen, | + | Bevor Sie eine kombinierte Frage bauen, |
+ | |||
+ | 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 '' | ||
+ | |||
+ | **Hinweis: | ||
===== Funktion ===== | ===== Funktion ===== | ||
Zeile 19: | Zeile 25: | ||
Die Anleitung geht zunächst auf das obere Beispiel mit 2 Fragen ein und anschließend auf das untere Beispiel, bestehende aus 3 Fragen. | Die Anleitung geht zunächst auf das obere Beispiel mit 2 Fragen ein und anschließend auf das untere Beispiel, bestehende aus 3 Fragen. | ||
- | **Hinweis: | + | **Hinweis: |
===== Schritt für Schritt ===== | ===== Schritt für Schritt ===== | ||
- 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 " | + | - Die Kopie -- die " |
- Ä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. | ||
- | - Fügen Sie ein Element // | + | - Fügen Sie ein Element // |
- Neben der Kennung der Frage (z.B. " | - Neben der Kennung der Frage (z.B. " | ||
<code php> | <code php> | ||
question(' | question(' | ||
+ | </ | ||
+ | |||
+ | __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([' | ||
</ | </ | ||
**Hinweis: | **Hinweis: | ||
- | 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 '' | + | 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 '' |
**Hinweis: | **Hinweis: | ||
Zeile 54: | Zeile 66: | ||
<code php> | <code php> | ||
question( | question( | ||
- | ' | + | ' |
); | ); | ||
</ | </ | ||
Zeile 88: | Zeile 100: | ||
); | ); | ||
</ | </ | ||
+ | |||
+ | ===== "Weiß nicht" für mehrere Skalen ===== | ||
+ | |||
+ | 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, | ||
+ | |||
+ | 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 | ||
+ | - // | ||
+ | - // | ||
+ | - //Inhalt:// JavaScript-Code weiter unten | ||
+ | - Speichern {{: | ||
+ | - Tragen Sie im PHP-Code unter dem '' | ||
+ | - Ersetzen Sie die Kennung '' | ||
+ | - Ersetzen Sie die Kennung '' | ||
+ | |||
+ | |||
+ | <code php> | ||
+ | question(' | ||
+ | show(' | ||
+ | </ | ||
+ | |||
+ | **Wichtig: | ||
+ | |||
+ | <code javascript> | ||
+ | <script type=" | ||
+ | <!-- | ||
+ | function dkRow(dk) { | ||
+ | var inputs = []; | ||
+ | |||
+ | // Functions to control the clicks and changes | ||
+ | var checker = function(evt) { | ||
+ | var input = SoSciTools.getSender(evt, | ||
+ | if (!input.checked) { | ||
+ | return; | ||
+ | } | ||
+ | if (input == dk) { | ||
+ | // Unselect all other inputs | ||
+ | for (var i=0; i< | ||
+ | if (inputs[i] == input) { | ||
+ | // Ignorieren | ||
+ | } else if (inputs[i].getAttribute(" | ||
+ | inputs[i].checked = false; | ||
+ | } else if (inputs[i].getAttribute(" | ||
+ | inputs[i].checked = false; | ||
+ | } else { | ||
+ | inputs[i].value = ""; | ||
+ | } | ||
+ | } | ||
+ | } else { | ||
+ | // Unselect DK input | ||
+ | dk.checked = false; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Find surrounding <tr> tag | ||
+ | var node = SoSciTools.findContainer(dk, | ||
+ | if (node == null) { | ||
+ | throw "No row for DK " + dk.getAttribute(" | ||
+ | } | ||
+ | |||
+ | // Find all inputs in the row and enable checker function | ||
+ | var inputs2 = node.getElementsByTagName(" | ||
+ | for (var i=0; i< | ||
+ | SoSciTools.attachEvent(inputs2[i], | ||
+ | // Enlist all non-dk inputs | ||
+ | if (inputs2[i] != dk) { | ||
+ | inputs.push(inputs2[i]); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | dkRow.registerQuestion = function(question) { | ||
+ | // Find all DK inputs (-1) for the specified question | ||
+ | // (check all possible items 1 to 99) | ||
+ | var anyFound = false; | ||
+ | for (var i=1; i<99; i++) { | ||
+ | var item = i.toString(); | ||
+ | // Care for two-digit ID | ||
+ | if (item.length < 2) { | ||
+ | item = " | ||
+ | } | ||
+ | // First check for DK option of a scale | ||
+ | var htmlID = question + " | ||
+ | var dk = document.getElementById(htmlID); | ||
+ | // Then check for multiple choice question | ||
+ | if (!dk) { | ||
+ | var htmlID = question + " | ||
+ | var dk = document.getElementById(htmlID); | ||
+ | } | ||
+ | if (dk) { | ||
+ | new dkRow(dk); | ||
+ | anyFound = true; | ||
+ | } | ||
+ | } | ||
+ | if (!anyFound) { | ||
+ | throw "Not found DK or multiple choice options for " + question; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | dkRow.registerQuestion(' | ||
+ | // --> | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Text in der Mitte ===== | ||
+ | |||
+ | Wenn man den Text zwischen den Eingabefeldern platzieren möchte, kann man mit dem Parameter '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Wenn die beiden Skalen-Fragen die Kennungen " | ||
+ | |||
+ | <code php> | ||
+ | question(' | ||
+ | |||
+ | pageCSS(' | ||
+ | table# | ||
+ | text-align: center; | ||
+ | } | ||
+ | '); | ||
+ | </ | ||
+ | |||
+ | **Hinweis: | ||
+ | |||
+ | **Tipp:** Alternativ zum '' | ||
+ | |||
+ | Der zweite Teil mit '' | ||
+ | ===== Kombination mehrerer Dropdown-Fragen ===== | ||
+ | |||
+ | Dropdown-Fragen lassen sich mithilfe von Tabellen nebeneinander platzieren und somit kombiniert abfragen (siehe dazu auch das Kapitel [[table-layout|Elemente nebeneinander platzieren]]). | ||
+ | |||
+ | Eine Schritt-für-Schritt-Beschreibung zum folgenden Beispiel lesen Sie unter [[table-layout-dropdowns|Dropdowns nebeneinander platzieren]]. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | ===== Mobilgeräte und responsive Darstellung ===== | ||
+ | |||
+ | 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 [[: | ||
+ | |||
+ | ==== Lösungsansatz 1 ==== | ||
+ | |||
+ | Der Befehl '' | ||
+ | |||
+ | Die Funktion '' | ||
+ | |||
+ | <code php> | ||
+ | show( | ||
+ | [' | ||
+ | [' | ||
+ | ); | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Lösungsansatz 2 ==== | ||
+ | |||
+ | Kombinierte Fragen mittels '' | ||
+ | |||
+ | Legen Sie als erstes eine Frage vom Typ " | ||
+ | |||
+ | 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 " | ||
+ | |||
+ | Nun können Sie mit ein paar Zeilen [[: | ||
+ | |||
+ | <code php> | ||
+ | if (value(' | ||
+ | // Kombinierte Frage | ||
+ | question(' | ||
+ | } else { | ||
+ | // Einzelne Fragen | ||
+ | question(' | ||
+ | question(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Zur Erklärung des Codes lesen Sie sei auf die Anleitung [[: | ||
+ | |||
+ | |||
+ |