+1 vote
in SoSci Survey (dt.) by s174551 (125 points)

Hallo,

ich habe eine zweiseitige Skalierungsfrage (0-100%) mit zwei Schiebereglern. Ich würde gerne einen dieser Regler bei 10% als "Anker" fixieren, sodass dieser nicht bewegt werden kann.

Ist das möglich und wenn ja, wie?

Ich blicke leider bei JavaScript nicht so wirklich durch und die Hilfe-Seite zu den Schiebereglern hilft mir auch nicht weiter.

Vielen Dank!

2 Answers

0 votes
by SoSci Survey (327k points)

Danke für die Geduld. Bitte fügen Sie auf der Seite folgenden JavaScript-Code ein.

<script>
window.addEventListener("load", function() {
    var slider = SoSciTools.questionnaire.SL01.getSlider("SL01_02");
    slider.value = 16;
    slider.disabled = true;
});
</script>

Sie Kennung "SL01" und "SL01_02" müssen Sie bitte entsprechend ihrem Schieberegler anpassen.

by s174551 (125 points)
Vielen Dank für Ihre Mühe!

Ich hab den Code auf der Seite über HTML-Code eingefügt und die Werte an meine Slider angepasst, leider passiert mit der Frage aber gar nichts. Muss ich dazu vielleicht noch etwas anderes einfügen?

Vielen Dank schon einmal!
by SoSci Survey (327k points)
Posten Sie doch bitte einmal den Pretest-Link direkt (!) zur betroffenen Seite im Fragebogen.
by SoSci Survey (327k points)
Die JavaScript-Feherkonsole sagt:

> Uncaught TypeError: SoSciTools.questionnaire.SF28_01 is undefined

Das liegt daran, dass Sie schreiben:

var slider = SoSciTools.questionnaire.SF28_01.getSlider("SF28_01a");

Korrekt wäre m.E. (s. oben):

var slider = SoSciTools.questionnaire.SF28.getSlider("SF28_01");
by s174551 (125 points)
Ah super, jetzt funktionierts!
Vielen Dank!
by s174551 (125 points)
Hallo, es tut mir sehr leid aber ich habe leider noch einmal Schwierigkeiten mit dem Code.

Mir ist grade beim testen aufgefallen, dass ich beide Regler nicht mehr bewegen kann. Als Fehlermeldung wird mir auch angezeigt, dass ich auf den zweiten Regler (SF28_01a) keine Antwort habe. Dieser sollte eigentlich noch beweglich sein.

Ich würde mich sehr freuen, wenn Sie mir hier noch einmal helfen könnten.
Hier noch einmal der Pretest Link:
https://www.soscisurvey.de/riskkommsst/?act=eiwBzKiTOlpIug2yrGiBA8hy
by SoSci Survey (327k points)
Das "disabled" bezieht sich auf das ganze Item, also in Ihrem Fall auf beide Regler, weil Sie beide ja auf demselben Balken anzeigen.

Nachdem ich keine einfache Lösung mit den vorhandenen Möglichkeiten gefunden habe, gibt es jetzt eine neue Funktion fixValue()

<script>
window.addEventListener("load", function() {
    var slider = SoSciTools.questionnaire.SF28.getSlider("SF28_01");
    slider.fixValue(16, 1);
});
</script>
by s257106 (210 points)
Ich habe ein ähnliches Problem. Zunächst kann man den Wert für den zweiten Regler mit vixFalue auf 16 stellen. Dieser lässt sich dann rein visuell auch nicht mehr verschieben. Ich kann aber trotzdem den Regler anklicken und Werte auf der Skala einstellen. Dann wird auch immer unterhalb des Reglers ein neuer Wert angezeigt. Intern (also in der Variablen) wird der Wert auch weiterhin verändert.

Frage: Kann man die Funktion disabled erweitern, sodass einzelne Regler und nicht das ganze Item deaktiviert werden?

Oder: Kann man die Darstellung der Werte so "programmieren", dass lediglich für Regler 1, den man ja visuell verschieben kann und soll, Werte angezeigt werden aber für den fixierten Regler 2 nicht?
by SoSci Survey (327k points)
Die Funktion fixValue() sollte natürlich auch den angezeigten Wert fixieren - wir kümmern uns darum, es kann nur 1-2 Tage dauern.
by SoSci Survey (327k points)
Danke für die Hinweise, dass fixValue() die Änderung des Wertes noch nicht nachhaltig verhinderte - auf www.soscisurvey.de haben wir nun ein Update eingespielt, sodass fixValue() den Wert wirklich fixiert.
0 votes
by SoSci Survey (327k points)

Es sei darauf verwiesen, dass sich ein Schieberegler mittlerweile auch über die Funktion Slider.fixValue() fixieren lässt.

<script type="text/javascript">
// Der Schieberegler ist erst verfügbar, wenn die Seite vollständig geladen wurde
SoSciTools.attachEvent(window, "load", function() {
  var slider = s2.SL01.item(2);
  slider.fixValue(16);
});
</script>
by s257106 (210 points)
Super, vielen Dank für die Unterstützung :) Folgende Dinge sind mir noch aufgefallen:

1. Beim Laden des Fensters wird der Slider nicht unmittelbar auf die Position gesetzt. Das passiert erst, wenn man diesen anklickt. Macht man das nicht, dann wird intern auch kein Wert gesetzt und die Frage wird als "nicht beantwortet" markiert. "Lösen" kann man das, wenn man den Slider intern zuvor mit preset () setzt.

2. Man kann den zweiten Slider, obwohl fixiert, immer noch anklicken. Der Wert wird jetzt zwar nicht mehr aktualisiert aber man hat den Slider immer noch "selektiert" und kann währenddessen nicht den Wert des eigentlichen Slider1 setzen, bevor man diesen wieder anklickt.  Schwierig ist das vor allem auf mobilen Geräten.

"Optimal" wäre es, wenn man die slider.disabled()-Funktion auf einzelne Buttons erweitern könnte, analog zu slider.fixValue(). Aber an sich ist die Lösung schon gut, vielen Dank für die Umsetzung!
by SoSci Survey (327k points)
> Beim Laden des Fensters wird der Slider nicht unmittelbar auf die Position gesetzt.

Danke für den Hinweis. Das trat auf, wenn man zwei Regler auf einem Schieberegler-Item verwenden, und den zweiten Regler fixiert - hiermit behoben.

> Man kann den zweiten Slider, obwohl fixiert, immer noch anklicken.

Ja, ich sehe das auch als suboptimal. Hiermit geändert.

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

...