0 votes
in SoSci Survey (dt.) by s014016 (360 points)

Hallo,

ich habe versucht die function toggle() zum Ein-bzw. Ausblenden einer weiteren Frage zu programmieren. Die Filterfrage ist eine Mehrfachantwort.

Leider ist es so, dass die Frage zwar bei mindestens einer Ja-Bedingung eingeblendet, aber bei der Nein-Bedingung nicht wieder ausgeblendet wird.
Nur wenn ich die Ja-Bedingungen abwähle wird die Frage ausgeblendet.

Bei einfachen Auswahlfragen funktioniert die Funktion gut.

Gibt es einen Trick bei den Mehrfachantworten?
Muss ich vielleicht optionA,checked bei dem else noch nennen, also ein else if daraus machen (es kann ja sein, dass optionB und optionC angekreuzt sind)?
Hier mal mein Code:

<script type="text/javascript">
<!--
var optionA = document.getElementById("FR08_01");  // Option "Nein"
var optionB = document.getElementById("FR08_02");  // Option "Ja, pos"
var optionC = document.getElementById("FR08_03");  // Option "Ja, neg"

var frage8 = document.getElementById("blockFr8a");  

function toggle2() {
  
  if (optionB.checked || optionC.checked){

    frage8.style.display = "";

  } else {
  
   frage8.style.display = "none";

  }
}
     
SoSciTools.attachEvent(optionA, "click", toggle2);
SoSciTools.attachEvent(optionB, "click", toggle2);
SoSciTools.attachEvent(optionC, "click", toggle2);
 
toggle2();
// -->
</script>

1 Answer

0 votes
by SoSci Survey (308k points)

Sicher, dass das eine Mehrfachauswahl sein soll und keine einfache Auswahl? Auf den ersten Blick scheint es so, dass nur eine Option ausgewählt werden soll.

Nur wenn ich die Ja-Bedingungen abwähle wird die Frage ausgeblendet.

Genso so haben SIe das im Code geschrieben. Sie haben formuliert, dass die Frage angezeigt werden soll, wenn eine der beiden Ja-Optionen markiert ist:

if (optionB.checked || optionC.checked)

Vermutlich würde es ausreichen, wenn Sie das "Nein" als exklusive Option markieren (in den Detail-Einstellungen der Option), sodass die Ja-Optionen abgewählt werden, sobald die Nein-Option gewählt wird.

Sie können es aber auch explizit in den Filter schreiben (falls optionA das "Nein" ist).

if ((optionB.checked || optionC.checked) && !optionA.checked)
by s014016 (360 points)
Hm, okay, dann muss ich noch mal nachsehen, warum beim Öffnen die Unterfrage sichtbar ist.

Aber ich bin ja schon ein Stück weiter. Vielen Dank!
by SoSci Survey (308k points)
Rufen Sie die Funktion beim Laden auch verzögert auf. Also am Ende des Codes einfach:

window.setTimeout(toggle2, 500);
by s014016 (360 points)
Wenn ich das ganz am Ende meines JavaScripts einsetze, wird die Unterfrage überhaupt nicht mehr eingeblendet...
by SoSci Survey (308k points)
Bei mir schon?! Auch in Edge.
by s014016 (360 points)
Bei mir jetzt auch - habe mich noch mal neu angemeldet...

Danke!

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...