0 votes
in SoSci Survey (dt.) by s088878 (310 points)

In meinem Fragebogen besteht jeder item aus einer Seite, die einen Lückentext mit einer einzelnen Lücke enthält. Die Teilnehmer haben ca. 10 Sekunden Zeit, etwas in diese Lücke einzufüllen.

Einige Leute haben das nun ausprobiert und gemeint, sie verlieren Zeit dabei, den Cursor in die Lücke zu bewegen und zu klicken, bevor sie ihre Antwort eintippen. Gäbe es die Möglichkeit, das irgendwie einzustellen, dass ein Teilnehmer nicht mehr die Lücke anklicken muss, sondern einfach zu tippen beginnen kann, um die einzelnen Lücke aufzufüllen? (Alternativ muss ich eben die verfügbare Zeit etwas erhöhen, was aber auch Messfehler mit sich bringen könnte...)

1 Answer

0 votes
by SoSci Survey (301k points)

Kein Problem - JavaScript erlaubt Ihnen genau das. Wenn Sie auf einer Seite z.B. die Lückentext-Frage AB01 haben und das erste Eingabefeld/Item entsprechend die Kennung AB01_01 hat, dann würden Sie unter der Frage einfach folgenden HTML-Code platzieren:

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

document.getElementById("AB01_01").focus();

// -->
</script>

Legt man das als Text im Fragenkatalog ab, kann man mit Platzhaltern noch ein wenig Code beim Einfügen in den Fragebogen sparen. Aber das ist dann nur die Kür.

Ich notiere für die SoSci-Wunschliste derweil einmal, dass es künftig in den Detail-Einstellungen eines Textfelds ein Häkchen geben sollte, dass der Cursor automatisch dorthin springt...

by s088878 (310 points)
Super, vielen Dank :)!
by s088878 (310 points)
Also das funktioniert in 3 meiner 4 Blöcke (die gleichzeitig meine experimentellen conditions sind) ganz gut. Im 4. Block funktioniert es wenn ich Firefox benutze, benutze ich allerdings Chrome oder den Internet explorer, dann funktioniert das html-script nicht und ich muss trotzdem in die Lücke klicken. Ich vermute mal dass der Grund dafür ist, dass ich in diesem Block auf jeder Seite zusätzlich zum html-Code noch 2 weitere html codes habe:
(1) zum automatischen Starten des audios nach 5 Sekunden:
<script type="text/javascript">
<!--

window.setTimeout(function() {
  document.getElementById("audio_hot").play();
}, 5000);

(2) um den next-button erst nach 5 Sekunden anzuzeigen:
<script type="text/javascript">
<!--
// Knopf zunächst ausblenden
SoSciTools.submitButtonsHide();
// Nach Ablauf von 5 Sek = 5000 ms wieder einblenden
window.setTimeout(
  SoSciTools.submitButtonsDisplay, 5000
)
// -->
</script>
// -->
</script>

Außerdem gibt es noch ein javascript, um den timer und eine Frage nach 5 Sekunden einzublenden:  
<script type="text/javascript">
<!--
// Funktion zum Einblenden der Knöpfe
function showContent() {
  document.getElementById("SI14_qst").style.display = "";
  document.getElementById("timer").style.display = "";
}

// Nach dem Laden der Fragebogen-Seite das Script starten
SoSciTools.attachEvent(window, "load",
  function() {
    // Objekt heraussuchen und ausblenden
    document.getElementById("SI14_qst").style.display = "none";
    document.getElementById("timer").style.display = "none";
    // Den Timer starten
    window.setTimeout(showContent, 5000); // Nach 5 Sek. = 5.000 ms
  }
);
// -->
</script>

Manchmal sehe ich noch ganz kurz die Frage aufblitzen (wenn das javascript zum Ausblenden noch lädt - siehe auch hier: https://support.soscisurvey.de/?qa=4176/inhalte-seite-ausblenden-gleichzeitig-wieder-einblenden&show=4454#c4454), und ich glaube, dass man zu diesem Zeitpunkt den cursor noch in der Lücke stehen sieht, so wie es sein sollte. Wenn die 5 Sekunden dann abgelaufen sind und die Frage angezeigt wird ist der cursor aber verschwunden, und man muss in die Lücke klicken... Kann man das irgendwie 'reparieren', damit das in diesem Block auch in Chrome bzw. Internet Explorer funktioniert?
by SoSci Survey (301k points)
Eigentlich sollte der Cursor durch den o.g. Code nicht springen. Aber Sie können mal versuchen, den Fokus nach dem Laden der Seite erneut zu setzen:

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

document.getElementById("AB01_01").focus();
SoSciTools.attachEvent(window, "load", function() {
  document.getElementById("AB01_01").focus();
});

// -->
</script>

Wenn das nicht hilft, dann vielleicht auch nochmal 250ms nach dem Laden...
by s088878 (310 points)
Also ich habe jetzt den ursprünglichen code durch den neuen ersetzt, und das hat leider auch nicht geholfen. Wir würde denn der code aussehen, wenn ich das 250 ms nach dem Laden mache?
by s088878 (310 points)
Also ich glaube, ich habe es jetzt mit einer anderen Methode geschafft - ich habe die Zeile
document.getElementById("IN08_01").focus();

in das bereits existierende javascript integriert, und zwar in die function showContent, die nach 5 Sekunden beginnt. Der code ist also:

<script type="text/javascript">
<!--
// Funktion zum Einblenden der Knöpfe
function showContent() {
  document.getElementById("IN08_qst").style.display = "";
  document.getElementById("timer").style.display = "";
 document.getElementById("IN08_01").focus();
}

// Nach dem Laden der Fragebogen-Seite das Script starten
SoSciTools.attachEvent(window, "load",
  function() {
// Objekt heraussuchen und ausblenden
    document.getElementById("IN08_qst").style.display = "none";
    document.getElementById("timer").style.display = "none";
    // Den Timer starten
    window.setTimeout(showContent, 5000); // Nach 5 Sek. = 5.000 ms
  }
);
// -->
</script>

Hört sich das sinnvoll an? (Es scheint auf jeden Fall zu klappen...)
by SoSci Survey (301k points)
Ja, das klingt überaus sinnvoll :)

Ich hatte nicht bedacht, dass ihr Fokus gerade auf das Eingabefeld zielt, das Sie verstecken. Offenbar erlaubt Chrome im Sinne des Datenschutzes (Text abgreifen) keinen Fokus auf ein verstecktes Eingabefeld.

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

...