2017-05-01 3 views
0

J'essaie d'implémenter du javascript personnalisé afin de sauvegarder une variable que j'initialise comme réponse à une question particulière.Qualtrics - Enregistrer la variable comme réponse

J'ai créé une question à choix multiple et l'ai limitée à une réponse possible: "Enregistrer les réponses". J'ai mis en place le code suivant, en essayant de sauver une variable de chaîne comme la réponse de la question:

this.questionclick = function(event,element) { 
    var toSave = "save this string"; 
    this.setChoiceValue(1, toSave); 

}

Cependant, ce ne sauve pas la variable "toSave" à la question. Il n'y a pas assez de documentation sur l'API de qualtrics, donc j'espère que quelqu'un a rencontré ce problème et peut fournir un exemple de solution.

Répondre

1

Vous ne pouvez pas modifier la valeur de texte d'une option de réponse via JavaScript. Qualtrics garde ce côté serveur. En faisant la valeur textuelle de l'option de réponse «enregistrer cette chaîne», vous pouvez faire le contraire en utilisant JavaScript pour changer cette étiquette de «sauvegarder cette chaîne» en «Enregistrer les réponses» lorsque la question est chargée. La structure html est légèrement différente sous jfe donc vous devez en tenir compte.

Qualtrics.SurveyEngine.addOnload(function() { 
    var jfe = false; 
    if(window.location.pathname.match(/^\/jfe/)) jfe = true; 

    var downArg = 0; 
    if(jfe) downArg++; 

    $(this.questionId).down('.LabelWrapper').down(downArg).update("Save responses"); 
}); 

EDIT: Pour répondre à une question dans le commentaire ci-dessous - Si vous souhaitez enregistrer une variable JavaScript Qualtrics, d'abord initialiser la variable dans le flux de l'enquête, puis enregistrez-le dans le JavaScript comme ceci:

Qualtrics.SurveyEngine.setEmbeddedData('myvar', value); 
+0

Merci pour la réponse. Lorsque j'adapte ce code pour mon enquête, j'obtiens une erreur car $ (this.questionId) .down ('. LabelWrapper') n'est pas défini, donc le reste de cette ligne ne fonctionne pas. Quelle est exactement la commande "down"? Selon l'API javascript, $ (this.questionId) renvoie une chaîne. – mops115

+0

Non, this.questionId est une chaîne (l'identifiant de la question). $ (this.questionId) renvoie l'élément de question (un div), puis bas recherche l'arborescence DOM dans l'élément de question et retourne le premier élément avec la classe LabelWrapper. Enfin, la prochaine baisse descend 1 (si SE) ou 2 (si JFE) niveaux du premier élément LabelWrapper, qui est l'élément qui contient le label. Cela suppose que vous avez une question à choix multiples avec un choix. Ça fonctionne bien pour moi. Tant que vous avez un MC avec au moins un choix, vous devriez avoir un élément avec la classe LabelWrapper. –

+0

Merci encore pour cela; J'ai obtenu la variable à afficher à côté du bouton radio, mais lorsque je soumets l'enquête, la nouvelle variable - celle que le texte de choix change - n'est pas sauvegardée; Au lieu de cela, il enregistre simplement tout nom que j'ai donné le bouton radio en premier lieu. Avez-vous fait quelque chose pour s'adapter à cela? – mops115