0 votes
in SoSci Survey (dt.) by s264898 (180 points)
edited by SoSci Survey

Hallo Zusammen,

ich habe mehrere Einfach-Auswahl-Fragen auf einer Seite (insgesamt 6 Stück, Variablen heißen SG01-SG06). Ich möchte, dass der Weiter-Button erst auftaucht, wenn alle Fragen beantwortet worden sind. Das ist mein bisheriger Java-Code in Anlehnung an https://www.soscisurvey.de/help/doku.php/de:create:dynamic:

Es funktioniert allerdings nicht - und ich weiß nicht, woran es liegt. Vielleicht haben Sie eine Idee? Ich würde mich sehr freuen!

<script type="text/javascript">
<!--
document.addEventListener("DOMContentLoaded", function() {
  // HTML-IDs der Auswahloptionen SG01 bis SG07
  var sg01 = document.getElementById("SG01");
  var sg02 = document.getElementById("SG02");
  var sg03 = document.getElementById("SG03");
  var sg04 = document.getElementById("SG04");
  var sg05 = document.getElementById("SG05");
  var sg06 = document.getElementById("SG06");
  var sg07 = document.getElementById("SG07");

  // HTML-ID des "Weiter"-Buttons
  var weiterButton = document.getElementById("weiter-button");

  // Button zu Beginn verstecken
  SoSciTools.submitButtonsHide();

  function toggleButton() {
    // Prüfen, ob alle Checkboxen oder Radiobuttons angeklickt wurden (checked)
    if (sg01.checked && sg02.checked && sg03.checked && sg04.checked && sg05.checked && sg06.checked) {
      // Wenn alle ausgewählt sind, zeige den "Weiter"-Button an
      SoSciTools.submitButtonsShow();  // SoSciTools Funktion, um den Button anzuzeigen
    } else {
      // Wenn nicht alle ausgewählt sind, verstecke den "Weiter"-Button
      SoSciTools.submitButtonsHide();
    }
  }

  // Die Funktion soll jedes Mal ausgeführt werden, wenn eine der Optionen angeklickt wird
  sg01.addEventListener("click", toggleButton);
  sg02.addEventListener("click", toggleButton);
  sg03.addEventListener("click", toggleButton);
  sg04.addEventListener("click", toggleButton);
  sg05.addEventListener("click", toggleButton);
  sg06.addEventListener("click", toggleButton);

  // Und jetzt gleich ausführen, um den Button zu Beginn korrekt zu verstecken
  toggleButton();
});
// -->
</script>
by s109993 (12.0k points)
Warum machen Sie die 6 Fragen nicht einfach zu Pflichtfragen, das würde ganz ohne Code gehen :)
by s264898 (180 points)
Danke für die Nachricht :) Es geht tatsächlich explizit darum, dass der Weiter-Button bei der Beantwortung der Fragen nicht zu sehen sein soll, und erst wenn alle Fragen beantwortet sind, soll der Weiter-Button erscheinen. Der Weiter-Button wäre bei der Einstellung "nur Pflichtfrage" nach wie vor während der Beantwortung zu sehen. Und das soll vermieden werden. Das Ziel, dass die Versuchsperson nicht einfach so auf die nächste Seite darf, ist mit einer Pflichtfrage natürlich gelöst. Das Ziel hier ist tatsächlich, dass der Weiter-Button erst einmal nicht zu sehen ist, erst wenn alles beantwortet wurde :)
by s109993 (12.0k points)
schauen Sie einmal hier nach, da wurde fast eine identische Frage gestellt:
https://support.soscisurvey.de/?qa=42876/javascript-weiter-button-einblenden-checkbox-ausgewahlt

1 Answer

0 votes
by SoSci Survey (327k points)
selected by s264898
 
Best answer

Der Code sieht so falsch nicht aus. Ich denke nur, dass die HTML-IDs der Auswahlfelder nicht korrekt sind.

var sg01 = document.getElementById("SG01");

Jedes Feld einer Auswahl hat eine eigene ID, nicht aber die die Frage gesamt. Sie können die einzelnen Felder entweder ergänzen, oder Sie gehen über s2.SG01 (u.s.w), diese JavaScript-Objekte bieten einen Check, ob die Frage beantwortet wurde, und können Events aufrufen, wenn sich in der Auswahl etwas ändert.

Sie können sich auch den Fragetyp "Auswahlabfolge" ansehen - dieser kann die Auswahlfragen optional auch alle zu Beginn anzeigen und bei der Option "Automatisch Weiter" sollten Sie den Weiter-Knopf direkt ausblenden lassen können.

by s264898 (180 points)
Danke für die Nachricht! Das stimmt tatsächlich, der Fehler lag bei den IDs. Ich habe sie nun geändert zu "SG01_01a" und dann noch mal eine Zeile mit "SG01_02a" und nun funktioniert es. Danke für den Kommentar!

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

...