使用Qualtrics中的javascript将可拖动栏设置为自定义起始位置

时间:2016-10-04 22:21:02

标签: javascript prototypejs qualtrics

在Qualtrics中,可以使用“自定义开始位置”设置可拖动条的起始位置(即它们的宽度)。这是通过在编辑测量时将条拖动到所需宽度来完成的。 但是,我正在寻找一种方法,使用JavaScript(或原型JavaScript)将条形的宽度设置为起始位置。

以下是我的尝试,首先(成功)尝试更改条形的颜色(在qualtrics和jsfiddle中),然后(成功)尝试调整这些尝试来改变jsfiddle上的条形宽度;因为在jsfiddle上工作的东西在Qualtrics上不起作用而卡住了。

在Qualtrics中,我可以使用以下原型JavaScript(改编自this answer)更改可拖动滑块的颜色:

Qualtrics.SurveyEngine.addOnload(function()
{
   //change the color of all bars to red for testing
    $(this.questionId).select('.bar').each(function(name, index) {
        name.style.backgroundColor = "red";
    });
});

可以看到(并检查)here的结果。检查链接中的调查确实显示background-color设置为红色: <div id="QID2~2~bar" class="bar" style="width: 103px; background-color: red;"></div>。宽度参数也存在,这意味着我应该能够使用以下代码修改宽度(在将库设置为原型时,确实可以在jsfiddle上工作):

$("test").select('.bar').each(function(name, index) {
        name.setStyle({ width: '40px'});
});

但是,此代码不适用于Qualtrics(将$("test")替换为$(this.questionId)并包含Qualtrics addOnload函数中的代码时)。

以下javascript也适用于Qualtrics更改条形颜色(改编自this answer):

Qualtrics.SurveyEngine.addOnload(function()
{
    //change the color of all bars to red for testing
    var bar = document.querySelectorAll('.bar');
    for (var i=0; i < bar.length; i++) {
        bar[i].setAttribute("style", "background-color:red");
    }
});

使用此代码,我还可以在jsfiddle上调整div宽度:

var bar = document.querySelectorAll('.bar');
for (var i=0; i < bar.length; i++) {
 bar[i].setAttribute("style", "width:40px");
}

然而,这再次对Qualtrics没有影响。

所以,长话短说:有没有办法以编程方式将Qualtrics中的条形图设置为起始位置,例如,将其宽度设置为父div的50%?

更新:

在深入研究Qualtrics Question API之后,我找到setChoiceValue,我可以通过编程方式选择多个选项。例如,

Qualtrics.SurveyEngine.addOnload(function()
{
    this.setChoiceValue(2,true); 

});

将通过将其值设置为true来选择第二个单选按钮:

enter image description here

但是,到目前为止,我无法将setChoiceValue应用于可拖动栏或找到类似的等效词。

更新2:

Qualtrics支持(非常友好和平易近人)建议setChoiceAnswerValue可能是我正在寻找的。但是他们也解释说他们无法为JavaScript提供客户支持。我看了more recent version of the API documentation,其中也列出了setChoiceAnswerValue,但到目前为止还没有成功。

2 个答案:

答案 0 :(得分:0)

我必须在我的原始代码中输入一个拼写错误,因为事实证明我开始实际工作的是:

Qualtrics.SurveyEngine.addOnload(function()
{
            $(this.questionId).select('.bar').each(function(name, index) {
            name.setStyle({ width: '50px'});
            });
});

答案 1 :(得分:0)

以下是使用Qualtrics Question API中记录的setChoiceValue方法为可拖动条设置自定义起始位置的解决方案。

以下是使用以前问题中的嵌入数据的10个小节的问题的示例代码。

var embedded = ["${e://Field/r1}", "${e://Field/r2}", 
"${e://Field/r3}", "${e://Field/r4}", "${e://Field/r5}", 
"${e://Field/r6}", "${e://Field/r7}", "${e://Field/r8}", 
"${e://Field/r9}", "${e://Field/r10}"];

for (var i = 0; i < 11; i++) {
  var index = i + 1;
  var choiceInput = embedded[i];

this.setChoiceValue(index, choiceInput);
}

用于设置一个条的自定义值:

Qualtrics.SurveyEngine.addOnload(function()
{
  this.setChoiceValue(2, "80");
});