0 votes
in SoSci Survey (dt.) by s201723 (115 points)

Liebes Support-Team,

ich möchte für mein Projekt mehrere offene Texteingabefelder nacheinander einblenden. D.h. wenn also das erste Textfeld-Item angeklickt oder bearbeitet wurde, sollte automatisch das nächste Textfeld-Item erscheinen (ohne jedoch das erste Textfeld-Item auszublenden). Es sind insgesamt 6 Items mit offenen Texteingabe-Feldern, die bestenfalls auf derselben Seite hintereinander erscheinen sollten, sobald jeweils das vorangegangene Item angeklickt wurde.
Ist dies für diesen Fragetyp möglich?
Ich habe bereits mittels JavaScript versucht, den Code anhand des Beispiels https://www.soscisurvey.de/help/doku.php/de:create:dynamic mit der toggle-Funktion anzupassen, doch das hat nicht funktioniert. Gibt es die Möglichkeit, das auf einer Fragebogen-Seite mit JavaScript umzusetzen?

Vielen Dank im Voraus! Liebe Grüße

1 Answer

+1 vote
by SoSci Survey (327k points)

Ist dies für diesen Fragetyp möglich?

Der Fragetyp "Offene Nennungen" macht genau das.

Das Script im Hintergrund lässt sich bei Bedarf auch auf andere Fragetypen anwenden - aber Sie benötigen ja ohnehin offene Texteingaben.

by s201723 (115 points)
Alles klar, danke. Und wie? Ich möchte ja, dass nur 1 Item, dann nach dem Ausfüllen dieses Textfelds das 2. Item mit Textfeld, dann das 3. mit Textfeld usw. angezeigt wird. Wie lässt sich das einstellen, ohne dass die Testperson auf 'Weiter' klicken muss?
by SoSci Survey (327k points)
Haben Sie eine Frage vom Typ "offene Nennungen" erstellt? Was wird in der Vorschau der Frage dann angezeigt?
by s201723 (115 points)
edited by s201723
Vielleicht lag da ein Missverständnis vor, ich brauche explizit offene Texteingaben mit je einer von 6 unterschiedlichen vorangestellten Fragen.
Ich habe es nun auf zwei Weisen versucht; einmal mit offenen Nennungen - hier möchte ich, dass jeder Zeile ein anderes Item vorangeht, da jede Zeile eine andere Frage beantworten soll. Das habe ich nicht mit %n% einstellen können, da der komplette identische Text vor jeder Zeile erscheint, d.h.
1 Itemtext01 1 Itemtext02 1 Itemtext03 <Textfeld offene Nennung 1>
2 Itemtext01 2 Itemtext02 2 Itemtext03 <Textfeld offene Nennung 2>
3 Itemtext01 3 Itemtext02 3 Itemtext03 <Textfeld offene Nennung 3>
usw. Ich benötige jedoch sechs unabhängige Items mit Text, die alle hintereinander vor einem Textfeld stehen

Und mit der dynamicRows-Funktion für die offene Texteingabe, das funktionierte jedoch nicht, es wurden von Anfang an alle Items gezeigt.
Hier der Code von der SoSci-Website angepasst mit den entsprechenden Items. Es soll nur 1 Zeile erscheinen, ich habe es aber auch mit anderen Zahlen versucht:

<script type="text/javascript">
<!--

SoSciTools.dynamicRows(1, ["SB01_07", "SB01_01", "SB01_02", "SB01_04", "SB01_03", "SB01_06"]);
 
// -->
</script>
Vielen Dank für Ihre Hilfe!
by SoSci Survey (327k points)
Okay, damit wir die Problematik deutlicher, danke.

Das mit dem dynamicRows() sieht eigentlich schon gut aus. Was sagt denn die JavaScript-Fehlerkonsole dazu? Möchten Sie vielleicht einen Pretest-Link direkt zu der Seite erstellen, wo Sie dynamicRows() eingebunden haben, und ihn hier posten?
by s201723 (115 points)
In der Fehlerkonsole erscheint für jedes Item Not found input SB01_0x doch der Variablenansicht zufolge sind die Items korrekt benannt.
Präziser zeigt die Konsole an: Not found input SB01_0x
i.dynamicRows    @    SoSciTools.min.js?i=1360:2

Hier der Link zur betreffenden Seite:
https://sosci.zdv.uni-mainz.de/personlichkeit/?act=ouDttegwDXTBr5fAbUgTYn4j
by SoSci Survey (327k points)
DIeses Problem ist einfach zu lösen: Verschieben Sie den JavaScript-Code bitte unter die Frage. Wenn der JavaScript-Code oberhalb der Frage steht, wird er schon ausgeführt bevor die Frage auf der Seite vorhanden ist, daher findet er in dem Moment die Eingabefelder noch nicht.

Alternativ könnte man den Code so ändern, dass er erst nach Laden der Seite ausgeführt wird.
by s201723 (115 points)
Das hat leider nicht funktioniert. Wie führt man Code nach Laden der Website aus? Ich hatte es mit window.onload = function () probiert. Die Konsole zeigt nun an Not found a row (TR) for input
by SoSci Survey (327k points)
Welche Version von SoSci Survey ist denn auf Ihrem Server installiert? Mit der aktuellen Version 3.6.07 sollte das Problem nicht mehr auftauchen.

Die Ursache liegt darin, dass die offene Texteingabe in Ihrer Programmversion eine Markierung fehlt, was die "Zeile" ist.

Als Workaround können Sie die Darstellung in der Frage auf "statisch" ändern. Dann funktioniert allerdings die Darstellung auf Smartphones nicht mehr besonder gut.
by s201723 (115 points)
Die Version 3.6.05, die kann ich leider nicht ändern, sie ist die aktuellste für die unsere Forschungseinrichtung lizenziert ist.
Habe es nun mit "statischer" Darstellung lösen können und es sieht annehmbar aus.
Vielen vielen Dank für Ihre Hilfe!
by SoSci Survey (327k points)
> kann ich leider nicht ändern, sie ist die aktuellste für die unsere Forschungseinrichtung lizenziert ist.

Schlechte Ausrede. Die Lizenz umfasst grundsätzlich alle Updates, man bekommt immer die neueste Version :)

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

...