0 votes
in SoSci Survey (dt.) by s343063 (150 points)

Liebe Communtiy,

ich würde gerne den Schieberegler nutzen, um Zahlungsbereitschaften zu messen. Die Werte sollen von 0-10 EUR gehen und Teilnehmende sollen alles auswählen können. Also 2,50EUR; 2,51EUR; 2,52EUR etc.. Falls das nicht geht, wären 10er Schritte bei den zwei Nachkommastellen auch okay. Also 2,50; 2,60; 2,70EUR.

Ist das möglich?

VG und danke!

1 Answer

0 votes
by SoSci Survey (373k points)

Wenn Sie den Wertebereich von 0,00 bis 10,00 € haben möchten, wären das 1001 mögliche Ausprägungen. Das bedeutet, Ihr Schieberegler müsste in der Ausgabe mindestens eine Breite von 1001 Pixeln haben, damit man wirklich jeden möglichen Wert wählen kann. Ob das gewährleistet ist, hängt davon ab, welches Layout mit welcher Breite Sie verwenden und welche Bildschirme (Smartphones?) Ihre Befragten haben.

Wenn die Voraussetzungen erfüllt sind, dann tragen Sie im Scheiberegler einfach eine Differenzierung von 1..1001 ein und verwenden Sie (value-1) / 100 als Formel für die Berechnung des angezeigten Werts.

Achten Sie bei der Auswertung darauf, dass die Codes um 1 gegen die Cent-Werte verschoben sind, also 1 = 0 Cent, 100 = 99 Cent, 1000 = 9,99 €.

Falls Sie nur auf 10 Cent gehen möchten, würden Sie eine Differenzierung von 1..101 wählen und die Formel (value-1) / 10 verwenden. In beiden Fällen würden Sie noch das toString(2) verwenden, um immer zwei Nachkommastellen anzuzeigen.

by s343063 (150 points)
Vielen Dank für Ihre schnelle Rückmeldung. Wie genau sieht der Java code den aus?...
by SoSci Survey (373k points)
by s343063 (150 points)
Vielen Dank! Ich habe mit Chat GPT nun folgende Codes:

Für den Schieberegler (da wird alles korrekt angezeigt):

var formatter = function(value, reversed) {
  // Nichts anzeigen, wenn kein gültiger Wert vorliegt
  if (value < 1) return "";

  // 1–1001 → 0,00–10,00 €
  var euro = (value - 1) / 100;

  return euro.toFixed(2).replace(".", ",") + " €";
};

SoSciSliders.setFormat(formatter);

Für die anschließende Bestätigungsseite, wo der Wert von der Varibale EX04_01 übernommen werden soll:

<div id="betragAnzeige" style="font-size:18px;"></div>

<script>
function formatEuro(value) {
  if (!value || value <= 0) return "";

  // 1–1001 → 0,00–10,00 €
  var euro = (value - 1) / 100;

  return euro.toFixed(2).replace(".", ",") + " €";
}

// Werte holen
var v04 = value('EX04_01');
var v10 = value('EX10_01');

// aktive Bedingung erkennen
var v = (v04 && v04 > 0) ? v04 : v10;

if (v > 0) {
  document.getElementById("betragAnzeige").innerHTML =
    "Ihr gewählter Betrag:<br>" + formatEuro(v);
}
</script>

Leider wird der Wert nicht übernommen und ich finde keine Lösung.. Ich bin auch unsicher, ob die Antwort überhaupt gespeichert wird, wenn man auf "weiter" klickt. Ich habe das sowohl im Probemodus als auch Simulation der Umfrage getestet und beide Male wird auf der Bestätigungsseite (trotz klick auf weiter) der vorherige Wert nicht übernommen.

Gibt es sonst eine andere Möglichkeit den Wert nochmal von Teilnehmenden bestätigen zu lassen?

Und PS: Die Teilnehmenden werden die Umfrage am Handy durchführen.
by SoSci Survey (373k points)
> Leider wird der Wert nicht übernommen

Das liegt daran, weil value() in JavaScript nicht verfügbar ist.

1) Speichern sie das JavaScript stattdessen als "Text" (mit Darstellung "HTML-Code") in Ihrem Fragekatalog

2) Ersetzen Sie value() durch Platzhalter, konkret:

// Werte holen
var v04 = %EX04_01%;
var v10 = %EX10_01%;

3) Binden Sie den "Text" (ich nehme hier im Beispiel mal die Kennung "JS01" an) mittels PHP-Code und show() ein und übergeben Sie dabei über die Platzhalter die Werte

show('JS01', [
  '%EX04_01%' => json_encode(value('EX04_01')),
  '%EX10_01%' => json_encode(value('EX10_01'))
]);

Aber wenn Sie den Betrag ohnehin erst auf der folgenden Seite einbinden möchten, dann geht es eigentlich viel einfacher. Und zwar können Sie das IF im PHP-Code erledigen und nur in einen Text einsetzen. Der Text wäre:

<p>Ihr gewählter Betrag:<br>%betrag%</p>

Und wenn das als TX01 im Fragenkatalog liegt, dann wäre der zugehörige PHP-Code:

if (value('EX04_01') > 0) {
  $betrag = value('EX04_01');
} else {
  $betrag = value('EX10_01');
}
show('TX01', [
  '%betrag%' => str_replace('.', ',', sprintf('%f1.2')).' €'
]);
by s343063 (150 points)
Dankeschön für Ihre schnelle Hilfe!! Es klappt!  :)

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

...