Guten Morgen,
Ich habe für meinen Fragebogen mit JavaScript 4 ineinander verschachtelte Fragen erstellt, welche wie in Fragen bei Auswahl einer bestimmten Option sofort einblenden selektiv eingeblendet werden:
- bei Auswahl von "Ich behandle selbst" der Frage BS03 erscheint Frage BS02
- bei Auswahl von "Überweisung an Kollegen" der Frage BS03 erscheint Frage UE01
- bei Auswahl von "Psychotherapie" der Frage BS02 erscheint Frag PS03
Dazu habe ich folgendes JavaScript als Textbaustein "Adaptiver Filter" programmiert:
<script type="text/javascript">
<!--
var optionA = document.getElementById("BS03_011"); // HTML-ID "Tagesschläfrigkeit - Ich behandle selbst"
var optionB = document.getElementById("BS03_021"); // HTML-ID "Atmungsstörung- Ich behandle selbst"
var optionC = document.getElementById("BS03_031"); // HTML-ID "Einschlafstörung- Ich behandle selbst"
var optionD = document.getElementById("BS03_041"); // HTML-ID "Parasomnie- Ich behandle selbst"
var optionE = document.getElementById("BS03_051"); // HTML-ID "Zirkadiane Rhythmusstörung- Ich behandle selbst"
var optionF = document.getElementById("BS03_061"); // HTML-ID "Narkolepsie- Ich behandle selbst"
var optionG = document.getElementById("BS03_071"); // HTML-ID "RLS- Ich behandle selbst"
var optionH = document.getElementById("BS03_081"); // HTML-ID "Hypersomnie- Ich behandle selbst"
var optionI = document.getElementById("BS03_091"); // HTML-ID "Sonstige- Ich behandle selbst"
var frage = document.getElementById("BS02_qst"); // HTML-ID der Frage "Behandlungsverfahren"
var optionJ = document.getElementById("BS03_012"); // HTML-ID "Tagesschläfrigkeit- Überweisung"
var optionK = document.getElementById("BS03_022"); // HTML-ID "Atmungsstörung-Überweisung"
var optionL = document.getElementById("BS03_032"); // HTML-ID "Einschlafstörung- Überweisung"
var optionM = document.getElementById("BS03_042"); // HTML-ID "Parasomnie- Überweisung"
var optionN = document.getElementById("BS03_052"); // HTML-ID "Zirkadiane Rhythmusstörung- Überweisung"
var optionO = document.getElementById("BS03_062"); // HTML-ID "Narkolepsie-Überweisung"
var optionP= document.getElementById("BS03_072"); // HTML-ID "RLS- Überweisung"
var optionQ = document.getElementById("BS03_082"); // HTML-ID "Hypersomnie-Überweisung"
var optionR = document.getElementById("BS03_092"); // HTML-ID "Sonstige- Überweisung"
var fraegle = document.getElementById("UE01_qst"); // HTML-ID der Frage "Zufriedenheit Überweisungsmöglichkeiten"
var optionA1 = document.getElementById("BS02_013"); // HTML-ID "Tagesschläfrigkeit - Psychotherapie"
var optionB1 = document.getElementById("BS02_023"); // HTML-ID "Atmungsstörung- Psychotherapie"
var optionC1 = document.getElementById("BS02_033"); // HTML-ID "Einschlafstörung- Psychotherapie"
var optionD1 = document.getElementById("BS02_043"); // HTML-ID "Parasomnie- Psychotherapie"
var optionE1 = document.getElementById("BS02_053"); // HTML-ID "Zirkadiane Rhythmusstörung- Psychotherapie"
var optionF1 = document.getElementById("BS02_063"); // HTML-ID "Narkolepsie- Psychotherapie"
var optionG1 = document.getElementById("BS02_073"); // HTML-ID "RLS- Psychotherapie"
var optionH1 = document.getElementById("BS02_083"); // HTML-ID "Hypersomnie- Psychotherapie"
var optionI1 = document.getElementById("BS02_093"); // HTML-ID "Sonstige- Psychotherapie"
var frage1 = document.getElementById("PS03_qst"); // HTML-ID der Frage "Duplikat Verfahren Psychotherapie"
function toogle() {
// Die Funktion prüft, ob eine der Optionen ausgewählt wurde ausgewählt wurde
if (optionA.checked || optionB.checked || optionC.checked || optionD.checked || optionE.checked || optionF.checked || optionG.checked || optionH.checked || optionI.checked) {
// Wurde eine Option ausgewählt, dann wird die Frage angezeigt
// Keine Angabe ("") verwendet die Standard-Einstellung (normal anzeigen)
frage.style.display = "";
} else {
// Mit der Anzeigeoption "none" wird die Frage ausgeblendet
frage.style.display = "none";
}
if (optionJ.checked || optionK.checked || optionL.checked || optionM.checked || optionN.checked || optionO.checked || optionP.checked || optionQ.checked || optionR.checked) {
// Wurde eine Option ausgewählt, dann wird die Frage angezeigt
// Keine Angabe ("") verwendet die Standard-Einstellung (normal anzeigen)
fraegle.style.display = "";
} else {
// Mit der Anzeigeoption "none" wird die Frage ausgeblendet
fraegle.style.display = "none";
}
if (optionA1.checked || optionB1.checked || optionC1.checked || optionD1.checked || optionE1.checked || optionF1.checked || optionG1.checked || optionH1.checked || optionI1.checked) {
// Wurde eine Option ausgewählt, dann wird die Frage angezeigt
// Keine Angabe ("") verwendet die Standard-Einstellung (normal anzeigen)
frage1.style.display = "";
} else {
// Mit der Anzeigeoption "none" wird die Frage ausgeblendet
frage1.style.display = "none";
}
}
// Die Funktion soll jedesmal ausgeführt werden, wenn eine der drei Optionen angeklickt wird
SoSciTools.attachEvent(optionA, "click", toogle);
SoSciTools.attachEvent(optionB, "click", toogle);
SoSciTools.attachEvent(optionC, "click", toogle);
SoSciTools.attachEvent(optionD, "click", toogle);
SoSciTools.attachEvent(optionE, "click", toogle);
SoSciTools.attachEvent(optionF, "click", toogle);
SoSciTools.attachEvent(optionG, "click", toogle);
SoSciTools.attachEvent(optionH, "click", toogle);
SoSciTools.attachEvent(optionI, "click", toogle);
SoSciTools.attachEvent(optionJ, "click", toogle);
SoSciTools.attachEvent(optionK, "click", toogle);
SoSciTools.attachEvent(optionL, "click", toogle);
SoSciTools.attachEvent(optionM, "click", toogle);
SoSciTools.attachEvent(optionN, "click", toogle);
SoSciTools.attachEvent(optionO, "click", toogle);
SoSciTools.attachEvent(optionP, "click", toogle);
SoSciTools.attachEvent(optionQ, "click", toogle);
SoSciTools.attachEvent(optionR, "click", toogle);
SoSciTools.attachEvent(optionA1, "click", toogle);
SoSciTools.attachEvent(optionB1, "click", toogle);
SoSciTools.attachEvent(optionC1, "click", toogle);
SoSciTools.attachEvent(optionD1, "click", toogle);
SoSciTools.attachEvent(optionE1, "click", toogle);
SoSciTools.attachEvent(optionF1, "click", toogle);
SoSciTools.attachEvent(optionG1, "click", toogle);
SoSciTools.attachEvent(optionH1, "click", toogle);
SoSciTools.attachEvent(optionI1, "click", toogle);
// Und jetzt gleich soll sie auch ausgeführt werden, damit die Anzeige zu Beginn korrekt ist
// (z.B. ausblenden der Texteingabe zu Beginn)
toogle();
// -->
</script>
Dies funktioniert tadellos.
Nun möchte ich gerne, wie in Items in eine andere Frage übernehmen beschrieben, in den Folgefragen nur jene Items anzeigen lassen, welche in der Frage zuvor ausgewählt wurden.
Dazu muss ich vermutlich Eigene Formularelemente verwenden. Dafür habe ich bereits 3 Interne Variablen mit je 9 Items erstellt:
- IV01 Interne Variable Psychotherapie
- IV02 Interne Variable Ich behandle selbst
- IV03 Interne Variable Überweisung
Diese Variablen würde ich auf S. 10 des Fragebogens einfügen - ziehe ich diese über oder unter die Frage, in welcher die interne Variable erfasst werden soll?
Anschließend erfolgt das Programmieren der Internen Variablen in meinem JavaScript "Adaptiver Filter". Zuletzt würde ich die PHP-Filter programmieren, um Items in eine andere Frage zu übernehmen.
Ist mein Gedankengang korrekt oder habe ich bei der Kombination von JavaScript und PHP einen Denkfehler gemacht? Wie sieht eine bessere Lösungsmöglichkeit aus?
Hier der Pretest-Link: https://www.soscisurvey.de/test275480/?act=yCM93yKItuBpp2dgGr7nkDZh
Vielen Dank im Voraus!