0 votes
in SoSci Survey (dt.) by s279569 (140 points)

Liebes SoSci Survey Team,
ich habe eine Frage erstellt, bei der die Befragten mehrere Items zur Wahl haben und unter diesen Items Ihre Top 3 auswählen sollen. Dafür habe ich den Fragentyp Rangordnung ausgewählt mit den Rängen Platz 1,2 und 3. Nun ist eines der wählbaren Items "Sonstiges" und wenn dieses Item einen der Top 3 Rankings erhält, sollen die Befragten in einem offenen Textfeld das sonstige Thema selbst eingeben.
Aktuell habe ich es so gelöst, dass ich den Fragentyp Rangordnung mit den Items erstellt habe und direkt darunter den Fragentyp "Texteingabe offen" platziert habe mit dem Hinweis, dass dort das sonstige Thema eingetragen werden soll. Das Problem ist nun, dass man auch etwas in das offene Textfeld tippen kann, wenn "Sonstiges" keines der Top 3 Rankings erhalten hat. Das würde ich aber gern so einstellen, aber im Fragentyp Rangordnung lasen sich weder Filter noch direkt offene Texteingaben einstellen. Gibt es hierfür eine andere Lösung, außer dass das offene Textfeld mit Filtern durch PHP Code auf der nächsten Seite platziert wird?
Vielen Dank im Voraus für die Hilfe

1 Answer

0 votes
by SoSci Survey (320k points)

Probieren Sie bitte mal folgendes: Eingabefelder frei platzieren - das ist ein wenig intuitiver für das Eingabefeld.

Das Problem ist nun, dass man auch etwas in das offene Textfeld tippen kann, wenn "Sonstiges" keines der Top 3 Rankings erhalten hat.

Ist das wirklich ein Problem?

Wenn jemand dort etwas einträgt, ist es entweder ein Kommentar zum Fragebogen (könnte interessant sein) oder er/sie hat die Frage nicht gelesen (sagt viel über die Qualität des Falls) oder falsch verstanden (sagt etwas über die Frage aus). Aber ich sehe keinen Schaden, der Ihnen entstünde?!

Wenn Sie das verhindern wollten, müssten Sie mit ein wenig Javascript arbeiten, und in Abhängigkeit der Rangordnung das Eingabefeld aktivieren/deaktivieren.

by s279569 (140 points)
Tatsächlich soll in diesem Fall nur ein Text eingegeben werden, wenn das Item auch wirklich ausgewählt wurde.
Ich habe nun wie vorgeschlagen das Textfeld per Platzhalter beim Item "Sonstiges" eingebunden, aber das Ergebnis stimmt leider nicht. Jetzt ist das Textfeld zwar dort platziert, wo ich es haben wollte,  aber man kann es noch immer ausfüllen, auch wenn "Sonstiges" nicht durch Platz 1,2 oder 3 bewertet wurde. Außerdem sind die Kreise zum bewerten dieses Items im Gegensatz zu den anderen Items verzerrt dargestellt und unter den Kreisen zum "Sonstiges Item stehen die Zeichen ">.
Zusätzlich kommt die Fehlermeldung, dass ich das Item des Platzhalters  bereits auf der Seite verwendet habe, was nicht stimmt.
Haben Sie noch einen Tipp, wie ich das lösen kann?
by SoSci Survey (320k points)
> Tatsächlich soll in diesem Fall nur ein Text eingegeben werden, wenn das Item auch wirklich ausgewählt wurde.

Es spricht aber nichts dagegen, einen fälschlicherweise eingegebenen Text zu ignorieren oder per Filter in der Auswertung zu löschen. Verstehe ich Sie da korrekt?

Wie gesagt: Sie können das Eingabefeld schon deaktivieren oder ausblenden. Dafür müssen Sie ein wenig mit Javascript arbeiten, vgl. https://www.soscisurvey.de/help/doku.php/de:create:dynamic

> die Kreise zum bewerten dieses Items im Gegensatz zu den anderen Items verzerrt dargestellt und unter den Kreisen zum "Sonstiges Item stehen die Zeichen ">.

Das müsste ich mir einmal direkt per Pretest-Link (direkt zur betroffenen Seite) ansehen.

> Zusätzlich kommt die Fehlermeldung

Wie lautet denn bitte die genaue Fehlermeldung (falls das nicht mit dem Pretest-Link ohnehin angezeigt wird)?
by s279569 (140 points)
Hier einmal der Pretest-Link, das Problem befindet sich auf S. 19: https://www.soscisurvey.de/smart-e-physio/?act=q0mHnlhIjjzfFRex3bnuCovF
Die Fehlermeldung wird drei mal hintereinander angezeigt und lautet: "Items in der nachfolgenden Fragen werden auf dieser Seite schon weiter oben angezeigt. Dies führt fast zwangsläufig zu Datenverlust! Falls Sie eine Frage mehrfach benötigen, legen Sie bitte eine Kopie der Frage an. Betroffen sind folgende Items: AP11_01."
by SoSci Survey (320k points)
Bitte stellen Sie beim Erstellen den Links ein, dass dieser direkt auf Seite 19 öffnet, danke.

Stellen Sie auch sicher, dass Sie AP11 nicht noch anderweitig als mithilfe des Platzhalters in die Seite einbinden (also z.B. nicht noch als Textfeld unterhalt der Frage/in die Seite gezogen).
by s279569 (140 points)
Entschuldigung, hier ist ein neuer Link, der direkt zu S.19 führen sollte:
https://www.soscisurvey.de/smart-e-physio/?act=XfHnZgxe4wYZ26kEYXXZ9kby
Ich habe sonst nirgendwo anders den Platzhalter verwendet und die Frage dazu auch nicht manuell irgendwo anders in den Fragebogen gezogen
by SoSci Survey (320k points)
Danke für den Pretest-Link - und die damit verbundene Klärung, dass die Rangordnung nicht in der Standard-Darstellung mit Kärtchen gezeigt wird, sondern in der Darstellung mit Auswahlfeldern. Wir konnten das Problem, dass diese in Verbindung mit %input:...% den von Ihnen beschriebenen Fehler verursachten, auf www.soscisurvey.de bereits kurzfristig beheben.
by s279569 (140 points)
Vielen Dank, die verzerrte Ansicht mit dem Platzhalter  ist nun weg. Der Platzhalter funktioniert für meinen Zweck nur leider nicht, da man trotzdem in das Feld tippen kann ohne eine Eingabe zu machen.
Deshalb habe ich entsprechend der obigen Anleitung versucht ein dynamisches Feld mit JavaScript zu erstellen (meine Kenntnisse sind da leider sehr begrenzt).  Das Textfeld taucht nun auf, wenn das Item mit einem der drei Plätze bewertet wurde. Sobald man die Auswahl aber ändert und das Item nicht mehr bewertet ist, bleibt das dynamische Textfeld trotzdem stehen und man kann wieder darin tippen ohne das Item bewertet zu haben.
Schickt man die Antwort ab und geht zurück auf die Seite, ist das Textfeld wieder verschwunden, bis man das Item wieder bewertet. Gibt es noch einen Zusatz zum Code, dass das Textfeld sofort verschwindet, sobald man dem Item eine der Bewertungen wieder entzieht?
Mein JavaScript dazu sieht so aus:

<script type="text/javascript">
<!--
var optionA = document.getElementById("AP01_07R1");
var optionB = document.getElementById("AP01_07R2");
var optionC = document.getElementById("AP01_07R3");
var frage = document.getElementById("AP11_qst");

function toggle() {
if (optionA.checked || optionB.checked || optionC.checked) {
frage.style.display = "";
 } else {
frage.style.display = "none";
  }
}

SoSciTools.attachEvent(optionA, "click", toggle);
SoSciTools.attachEvent(optionB, "click", toggle);
SoSciTools.attachEvent(optionC, "click", toggle)

toggle();

</script>
by SoSci Survey (320k points)
Gar nicht mal schlecht!

> Sobald man die Auswahl aber ändert und das Item nicht mehr bewertet ist, bleibt das dynamische Textfeld trotzdem stehen

Bisher lauscht Ihr Code nur darauf, wann eines der drei Felder angeklickt wird. Sie müssen noch auf alle anderen Klicks lauschen. Ändern Sie die letzten 4 Zeilen wie folgt ab:

window.addEventListener("load", function() {
  s2.AP01.addEventListener("click", toggle);
  // Es sollte sogar ohne diese drei Zeilen funktionieren - testen Sie das gerne mal
  SoSciTools.attachEvent(optionA, "click", toggle);
  SoSciTools.attachEvent(optionB, "click", toggle);
  SoSciTools.attachEvent(optionC, "click", toggle)
  toggle();
});

Neu ist der EventListener für s2.AP01 (das ist die Ranking-Frage) und dass der Code erst ausgeführt wird, wenn die Seite geladen ist.

Mit demselben Code können Sie das Eingabebeld übrigens auch ausblenden, wenn es direkt beim Item eingebunden ist. dafür würden Sie

var frage = document.getElementById("AP11_qst");

ersetzen durch

var frage = document.getElementById("AP11_01");
by s279569 (140 points)
Jetzt funktioniert es, vielen vielen Dank!

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

...