2 votes

Utilisation de javascript pour enregistrer le temps de réaction dans qualtrics à l'aide d'une touche sans avancer

Je suis novice en javascript et j'apprends à l'utiliser dans qualtrics. Dans mon enquête, j'ai une question qui s'affiche pendant 1500 ms et à laquelle les répondants doivent appuyer sur l'une des deux touches ('S' ou 'D') pour répondre. J'aimerais que Qualtrics enregistre le temps nécessaire aux répondants pour appuyer sur l'une de ces touches avant de passer à la question suivante et que Qualtrics ne passe pas automatiquement à la question suivante après l'appui sur une touche.

Le code ci-dessous permet de répondre en utilisant la touche 'S' ou 'D' et empêche la question d'avancer automatiquement après l'appui sur la touche. Cependant, le temps de réaction enregistré est toujours la durée de la question (1500 ms) et non le temps mis par les participants pour répondre. Si quelqu'un a une idée sur la façon dont je peux enregistrer avec précision le temps de réaction à la pression de la touche, il serait très apprécié !

Qualtrics.SurveyEngine.addOnload(function () {
  this.hideNextButton();
  this.hidePreviousButton();
  var that = this;
  Event.observe(document, 'keydown', function keydownCallback(e) {
    var choiceID = null;
    switch (e.keyCode) {
      case 83: // 'S' was pressed
        choiceID = 1;
        break;
      case 68: // 'D' was pressed
        choiceID = 2;
        break;
    }
    if (choiceID) {
      Event.stopObserving(document, 'keydown', keydownCallback);
      that.setChoiceValue(choiceID, true);
    }
  });
});

1voto

jasmin_makasana Points 357

Veuillez essayer avec le code suivant :

Qualtrics.SurveyEngine.addOnload(function () {
  let timeOnLoad = new Date().getTime();
  this.hideNextButton();
  this.hidePreviousButton();
  var that = this;
  Event.observe(document, 'keydown', function keydownCallback(e) {
    var choiceID = null;
    switch (e.keyCode) {
      case 83: // 'S' was pressed
        choiceID = 1;
        break;
      case 68: // 'D' was pressed
        choiceID = 2;
        break;
    }
    if (choiceID) {
      let timeTaken = new Date().getTime() - timeOnLoad;
      console.log(timeTaken);
      Event.stopObserving(document, 'keydown', keydownCallback);
      that.setChoiceValue(choiceID, true);
    }
  });
});

J'espère que cela vous aidera :)

0voto

Jørgen Points 78

D'après la documentation, je pense que cela ferait l'affaire.

Qualtrics.SurveyEngine.addOnload(function () {
  var startTime = new Date().getTime();
  this.hideNextButton();
  this.hidePreviousButton();
  var that = this;
  Event.observe(document, 'keydown', function keydownCallback(e) {
    var choiceID = null;
    switch (e.keyCode) {
      case 83: // 'S' was pressed
        choiceID = 1;
        break;
      case 68: // 'D' was pressed
        choiceID = 2;
        break;
    }
    if (choiceID) {
      let reactionTime = new Date().getTime() - startTime;
      Event.stopObserving(document, 'keydown', keydownCallback);
      that.setChoiceValue(choiceID, true);
      that.setEmbeddedData('reactionTime', reactionTime);
    }
  });
});

référence : https://s.qualtrics.com/WRAPI/QuestionAPI/classes/Qualtrics%20JavaScript%20Question%20API.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X