0 votes
in SoSci Survey (dt.) by s255294 (295 points)
edited by s255294

Hallo,

ich möchte dass Teilnehmende in einem Fragebogen 5 Fragen beantworten, wovon mindestens 3 verpflichtend und die letzten zwei freiwillig sind. Wenn die Teilnehmenden nur die ersten 3 Fragen beantworten, wird eine Warnung ('error_contact2') eingeblendet, um nochmal nachzuhaken, ob sich die Teilnehmenden sicher sind, dass sie nicht alle Fragen beantworten wollen. Die Seite wird außerdem nochmal wiederholt, um den Teilnehmenden die Chance zu geben die Informationen noch zu ergänzen:

if (!isset($rPG9)) {
  if ((value('MI04') || value('MI05')) == 0) {
    $rPG9 = true;
    registerVariable($rPG9);
    repeatPage('error_contact2');
  }
}

Allerdings hätte ich gerne, dass die Teilnehmenden nicht nur den Warnhinweis eingeblendet bekommen, sondern in demselben Kästchen auch bestätigen können/ müssen, wenn sie fortfahren möchten und dann auch direkt dort auf weiter drücken können (So, dass man nicht erst nach unten zum weiter-Button scrollen muss).
Ich bräuchte also ein Element, dass den Warnhinweis, einen Bestätigen-Kästchen und einen weiter-Button enthält.
Ist dies irgendwie möglich?

Danke für Ihre Hilfe!

1 Answer

0 votes
by SoSci Survey (312k points)
selected by s255294
 
Best answer

Am einfachsten aktivieren Sie in MI04 und MI05 die Option, dass bei einer fehlenden Antwort nachgehakt wird.

Aber es ist natürlich auch mit PHP möglich. Zunächst einmal sollten Sie einen kleinen Fehler beseitigen:

if ((value('MI04') || value('MI05')) == 0) {

Der Filter greift immer, wenn im ersten Feld etwas eingetragen ist, nicht wenn nur im zweiten etwas steht. Korrekt wäre hier:

if (!value('MI04') || !value('MI05')) {

So, aber nun zu Ihrer Frage: Erstellen Sie eine Frage vom Typ "Mehrfachauswahl" mit einer Option - ich nehme mal an, dass diese MF01_01 heißt. Dann packen wir ein wenig Code unten auf die Seite mit den Fragen

if (getRoute() == 'repeat') {
    question('MF01');
}

Und die Antwortprüfung läuft dann ohne isset()

if ((!value('MI04') || !value('MI05')) && (value('MF01_01') != 2)) {
    repeatPage('error_contact2');
}
by s255294 (295 points)
Super vielen Dank, das hat schon sehr geholfen!

Was Sie jetzt noch nicht angesprochen hatten ist, ob man den Warnhinweis, die Bestätigungsfrage (MF01) und einen extra weiter-Button zusammen in einem Element einbinden kann. Aktuell ist nämlich auf den ersten Blick nicht wirklich klar, dass die Frage und der Hinweis zusammen gehören (Siehe Screenshot in ursprünglicher Frage)
Könnten Sie dies noch beurteilen?
by SoSci Survey (312k points)
Nun, die Zusammengehörigkeit können Sie durch Anpassen der Reihenfolge und Abstände (ich sehe oben keinen Screenshot?!) sicher entsprechend kommunizieren (s. auch https://www.soscisurvey.de/help/doku.php/de:create:concat).

"In ein Element einbinden" kann man sehr unterschiedlich interpretieren, zum Beispiel dachte ich an eine Auswahlfrage in Kärtchendarstellung, die bei Auswahl direkt auf die nächste Seite weiterleitet ... aber vermutlich meinten Sie etwas ganz anderes.
by s255294 (295 points)
Mit "in ein Element einbinden" meinte ich, dass ich gern die Warnung (im roten Kästchen) und die Auswahlfrage gerne gemeinsam in einem Feld darstellen wollte. Aktuell stehen diese ja untereinander (nun sollte der Screenshot oben sichtbar sein), wodurch nicht ganz klar wird, dass diese zusammengehören.

Sie hatten außerdem die Option erwähnt, dass man direkt bei Auswahl der Frage auf die nächste Seite weitergeleitet wird. Dies würde ich gern einrichten und habe dafür folgenden JavaSkript-Code eingebunden, der aber leider nicht funktioniert:

<script type="text/javascript">
<!--
var optionA = document.getElementById("CH05_01a");  
 
function toggle() {
    SoSciTools.submitPage();
  }
 
// Die Funktion soll jedesmal ausgeführt werden, wenn eine der drei Optionen angeklickt wird
SoSciTools.attachEvent(optionA, "click", toggle);
 
</script>
by SoSci Survey (312k points)
Sie können in einer Auswahlfrage einfach per Kreuzchen einstellen, dass es automatisch zur nächsten Seite weitergehen soll. Ich JavaScript-Code sieht aber auch ganz gut aus. Was sagt denn die Fehlerkonsole im Browser dazu?

>  dass ich gern die Warnung (im roten Kästchen) und die Auswahlfrage gerne gemeinsam in einem Feld darstellen wollte

Dann zeichnen Sie den roten Rahmen einfach manuell mit ein wenig html() ... also davor z.B.

html('<div style="border: 2px solid red; padding: 0.8em; margin: 3em 0">');

und unter Text und Frage dann

html('</div>');
by s255294 (295 points)
Leider habe ich diese Options nirgendwo unter "Auswahloptionen" gefunden (Vielleicht aufgrund einer älteren SoSci Variante?). In der Fehlerkonsole wird mir folgende Nachricht angezeigt:

"Uncaught Error: No element specified for
     SoSciTools.attachEvent()
            at i.attachEvent (SoSciTools.min.js?i=1331:2:3814)
            at index.php?i=T0STDM4TX6EV&rnd=BTBU:750:12"
by SoSci Survey (312k points)
Wenn Sie eine Frage com Typ "Einfach Auswahl" verwenden, dann suchen Sie bitte unter "Weitere Einstellungen" -> "Auswahloptionen" -> "Automatisches "Weiter""

> No element specified for

Dann findet diese Zeile

var optionA = document.getElementById("CH05_01a");  

nicht das passende Element. Haben Sie den Javascript-Code unterhalb der Frage platziert?
by s255294 (295 points)
Ah, ich hatte fälschlicherweise "Mehrfachauswahl" als Fragetyp eingestellt und deshalb die Option nicht gefunden. Jetzt habe ich dies eingestellt aber leider funktioniert die Weiterleitung immer noch nicht. Stattdessen erhalte ich folgende Warnungen/ Hinweise (siehe Screenshot oben in Frage)

Und ja, der Javascript-Code ist unterhalb der Frage platziert.
by SoSci Survey (312k points)
Eine Mehrfachauswahl könnte in Ihrem Fall auch schicker sein. Eine Einfache Auswahl macht ja nur Sinn, wenn Sie als Optionen "Ja, ich will antworten" und "Nein, ich will weiter" anbieten.

Bei der Mehrfachauswahl müssten sie mit Javascript arbeiten.

> siehe Screenshot oben in Frage

Beachten Sie, dass sich die Variablenstruktur und die HTML-Kennungen der Auswahlfelder (https://www.soscisurvey.de/help/doku.php/de:general:browser-tools) zwischen einfacher Auswahl und Mehrfachauswahl deutlich unterscheiden.
by s255294 (295 points)
Super, das hat funktioniert!!
Ich habe wieder die Mehrfachauswahl genutzt, aber anstatt "CH05_01a" nur "CH05_01" als ID des Elements angegeben.

Vielen Dank für die tolle Hilfe!

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

...