2017-05-01 8 views
0

変数を保存するためにカスタムJavaScriptを実装しようとしていますが、特定の質問に対する答えとして初期化します。Qualtrics - 変数を回答として保存する

私は複数の選択肢の質問を作成し、1つの可能な回答に制限しました:「回答を保存する」。 私は質問の答えとして文字列変数を保存しようとすると、次のコードを実装しました:

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

}

しかし、これは質問に、変数「toSaveを」保存されていません。 QualtricsのAPIにはあまり手に入らないドキュメントがありますので、ここで誰かがこの問題に遭遇し、サンプルソリューションを提供してくれることを願っています。

答えて

1

回答オプションのテキスト値をJavaScriptで変更することはできません。 Qualtricsはそのサーバー側を維持します。

回答オプションのテキスト値を「この文字列を保存」し、JavaScriptを使用して、質問が読み込まれたときにラベルを「保存する」から「応答を保存」に変更することができます。 html構造はjfeの下では少し異なりますので、そのことを考慮する必要があります。

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: 以下のコメントでの質問に答えるために - あなたは、このようなJavaScriptでそれを保存し、その後、最初の調査の流れで変数を初期化し、QualtricsでJavaScript変数を保存したい場合:

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

お返事ありがとうございます。調査のためにそのコードを変更すると、$(this.questionId).down( '。LabelWrapper')が定義されていないためエラーが発生し、その行の残りの部分は機能しません。 「ダウン」コマンドとは何ですか? javascript APIによると、$(this.questionId)は文字列を返します。 – mops115

+0

いいえ、this.questionIdは文字列(質問ID)です。 $(this.questionId)はquestion要素(div)を返し、question要素内のDOMツリーを検索し、LabelWrapperクラスの最初の要素を返します。最後に、ラベルを含む要素である最初のLabelWrapper要素から1つ下(SEの場合)または2(JFEの場合)のレベルが下がります。これはあなたが1つの選択肢で複数選択問題を持っていることを前提としています。それは私のためにうまく動作します。少なくとも1つの選択肢を持つMCを持っている限り、LabelWrapperクラスの要素を持つ必要があります。 –

+0

もう一度このことに感謝します。ラジオボタンの隣に表示される変数を取得しましたが、サーベイを送信すると、選択されたテキストが変更された新しい変数が保存されません。代わりに、ラジオボタンを最初に付けた名前を保存するだけです。あなたはそれを調整するために何かしましたか? – mops115

関連する問題