0 votes
in SoSci Survey (dt.) by s109993 (9.9k points)
edited by s109993

Hallo,

ich will das eine Radiobox beim laden der Frage schon angeklickt ist, wenn auf der Seite davor eine bestimmte Zahl in das Textfeld eingegeben wurde:

$rest = substr("SM10_01", 3);

<script>
var myvar = <?php echo json_encode($rest);?>;
if (myvar == 2) {
document.getElementById('SM11_01a').checked=true; 
}
</script>

Also, wenn der Substring eine 2 enthält auf der dritten Stelle des Strings, soll die Radiobox (SM11_01a) schon mit dem laden der Seite angekreuzt sein. Ich denke, dass der Fehler beim übergeben der $rest Variable (php) an var myvar (JS) passiert. Ich weiß das echo normalerweise nicht in SoSci funktioniert, aber hier bekomme ich keine Fehlermeldung. Wenn ich den Teil <?php echo($rest);?> mit einer zwei ersetze, funktioniert der Rest.

Vielleicht kann mir jemand bei Troubleshooting helfen?! :)

Danke und viele Grüße

1 Answer

+1 vote
by SoSci Survey (304k points)
selected by s109993
 
Best answer

Ich empfehle dafür die Funktion preset().

if (substr(value('SM10_01'), 3) == '2') {
  preset('SM11', 1);
}

Prüfen Sie nur bitte die Kennung der Variablen, die Sie setzen. Je nach Fragetyp müssen Sie das 'SM11' und/oder den gesetzten Wert noch anpassen.

Bei der Arbeit mit JavaScript werden Sie ein paar unerwünschte Effekte erleben, wenn der Teilnehmer die Seite neu lädt oder wenn sie wg. fehlender Antwort wiederholt wird. Pripiziell ist das auch möglich - und zwar über Platzhalter.

by s109993 (9.9k points)
Danke für die schnelle Rückmeldung. Der Test liefert die richtigen Ergebnisse wenn der String genau 4 Stellen lang ist. Nun wird es aber so sein das der String wahrscheinlich 8 Stellen lang sein wird, und trotzdem nur der substring von der 4. Stelle gebraucht wird. Laut dem php substr Manual sollte ein längerer String kein Problem sein. Liegt das an der SoSci Umgebung oder habe ich etwas Übersehen?
Zum Testen habe ich folgenden Code verwendet:

if (substr(value('SM10_01'), 3) == '2') {
  preset('SM11', 2);
} else {
repeatPage('error_1von3');
}
by s109993 (9.9k points)
Problem gelößt: der Substring braucht ein zweites Argument:

if (substr(value('SM10_01'), 3,1) == '2') {
  preset('SM11', 2);
} else {
repeatPage('error_1von3');
}

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

...