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

0 votes

Hallo,

vielen Dank für Ihre Antwort!
Leider habe hat mit dem von Ihnen vorgeschlagenen Code der Klick auf die Überschrift nicht funktioniert, und ich konnte durch Abfangen der internen Variablen auch keine Wiederholung der Seite inklusive Fehlermeldung anzeigen lassen.
Nun habe ich versucht, ausgehend von Ihrem Vorschlag eine Next-Funktion in die Überschrift zu integrieren, sowie andere Klicks abzufangen, wenn die interne Variable einen anderen Wert hat.

Das sieht folgendermaßen aus:
PHP:

prepare_input('AW06_01');
if (value('AW06_01') != 2) {
  repeatPage('Awareness_false');
}

HTML:

<script type="text/javascript">

    var imcElement = document.getElementById("imcElement");
    var imcData = document.getElementById("AW06_01");
    function clickH() {
      imcData.value = 2;
      SoSciTools.submitPage();
    }
    imcData.value = 1;

  </script>

PHP:

if (value ('AW03') == 1) {
  html('
  <h1 onClick="clickH();" id="imcElement" style="font-size: 24px">Title1</h1>
  ');
  text('Text1');

} elseif (value ('AW03') == 2) {
  html('
  <h1 onClick="clickH();" id="imcElement" style="font-size: 24px">Text2</h1>
  ');
  text('Text2');
}

Damit funktioniert der Klick auf die Überschrift, die Variable wird dabei auf 2 gesetzt, und bei Klick auf Next auf 1.
Jedoch wird bei Klick auf Next die Seite nicht wiederholt, stattdessen gelange ich automatisch auf die nächste Seite.
Wie kann ich bei Klick auf den Next Button die Seite wiederholen, die Fehlermeldung aufrufen und diese ansonsten ausblenden (aktuell wird sie immer angezeigt)?

Zudem werden einige Fehlermeldungen angezeigt:
1) Items of the following question have been used repeatedly on this page. This inevitably results in data loss! If you need the same question more than once, please create a copy of this question. The following items are duplicates: AW06_01.
--> Wieso werden hier Werte überschrieben?
2) The variable AW06_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
--> Kann ich den Wert der internen Variable anders abfragen?
3) The function repeatPage() will only work as long as the page does not show any questions above.
--> es werden doch keine Fragen angezeigt?
Außerdem: Ist es korrekt, den PHP Code zur Abfrage der internen Variable für die Fehlermeldung oben zu platzieren (um bei Wiederholung der Seite die Fehlermeldung oben anzuzeigen) oder sollte er unter dem Script Code angezeigt werden, da ja erst da die Werte festgelegt werden (wie kann die Fehlermeldung dann oben auf der Seite platziert werden?)

Vielen Dank im Voraus für Ihre nochmalige Antwort!

Viele Grüße

in SoSci Survey (dt.) by s090906 (150 points)
closed by SoSci Survey
Ich empfehle stark, herauszufinden, warum die letztgenannte Lösung nicht funktioniert - das scheint mir *wesentlich* einfacher und damit weniger fehleranfällig als die hier gepostete Lösung.

Was zeigt denn die JavaScript-Fehlerkonsole des Browsers an?

> prepare_input('AW06_01');

Dieser Befehl funktioneirt erst, wenn Sie ein <input id="AW06_01"> definieren - einfacher ist es, die Frage "interne Variablen" direkt in die Seite zu ziehen. Dann fällt auch dies weg.

Dies gilt als "Frage", daher die Fehlermeldung von SoSci Survey, weil das nicht vor repeatPage() stehen darf.
Vielen Dank für Ihre Antwort!
Ich habe nun einen Fehler in der Konsole gefunden, und behoben indem ich "click" in "SoSciTools.attachEvent(imcElement, "click", function()" in Klammern gesetzt habe. Nun funktioniert der Klick auf die Überschrift und es werden keine weiteren Fehler in der Konsole angezeigt.

Leider wird die Seite bei Klick auf Next immer noch nicht wiederholt bzw. die Fehlermeldung nicht angezeigt. Eventuell liegt mein Fehler im Abfangen des Wertes der internen Variable?

Aktuell mache ich das mit folgendem PHP Code, der über dem Java Script code und der hereingezogenen internen Variable steht:

prepare_input('AW06_01');
if (value('AW06_01') == 1) {
  repeatPage('Message');
}

Muss das "prepare_input" an einer anderen Stelle stehen? Oder ist das gar kein PHP code?

Gibt es die Möglichkeit, dass der Java Script Code nicht aufgerufen wird, oder sind die einzigen Möglichkeiten ein Klick auf "Next" (IV wird zu 1) und ein Klick auf die Überschrift (IV wird zu 2), weshalb mein == 1 zu Fehlern führen könnte?

Danke nochmals für Ihre Hilfe!

Viele Grüße
das prepare_input() ist überhaupt nicht erforderlich.

> Gibt es die Möglichkeit, dass der Java Script Code nicht aufgerufen wird

Wenn ein Klick auf die Überschrift zur nächsten Seite führt (wo dann der PHP-Filter steht), dann ist das JavaScript aktiv.
Ich habe immer noch das Problem, dass bei Klick auf Next keine Fehlermeldung aufgerufen wird.. Wie kann ich diesen abfangen?

Ein neuer Vorschlag:
if (value('AW06_01') != 1 && (isset($_POST['submit']))) {
  repeatPage('Awareness_false');
}
Jedoch darf $_post im PHP-Code nicht verwendet werden.
Wie soll ich den Klick auf next sonst abfangen?

Danke nochmals und viele Grüße.
Bitte posten Sie die Debug-Information, die Sie nach dem Klick auf "Next" erhalten. Dort sollte u.a. ersichtlich sein, welcher Code in AW06_01 (das ist Ihre interne Variable?) gespeichert wird. Das sollte sich in Abhängigkeit davon ändern, wo geklickt wurde.

Dass $_POST nicht erlaubt ist, hat schon seinen Sinn. Prinzipiell könnten Sie stattdessen readGET() verwenden, aber glauben Sie mir - damit kommen Sie nicht weiter, denn der Weiter-Knopf wird technisch gesehen auch dann geklickt, wenn Sie mittels JavaScript zur nächsten Seite wechseln.
Ich habe es jetzt gelöst indem ich einen neuen Button eingefügt habe und den bestehenden Button mit SoSciTools.submitButtonsHide(); ausgeblendet habe, so scheint es zu funktionieren. Danke für Ihre Hilfe!
...