如何基于每个输入格式化 Qualtrics 嵌入式数据



我要完成的是获取一些嵌入式数据,并以特定的方式(颜色,位置等)输出它。 例如,我们将嵌入的数据作为<div class="previous">$e://Field/DTBEG}</div>放在问题文本中,但我想抓住它并将其直接插入输入字段下方(我认为我们不能直接在 Qualtrics 中执行此操作,因此这里需要自定义 JS)。

所以在问题文本中,我有:

<div>1a. Reporting Period: Beginning</div>
<div class="previous date">${e://Field/DTBEG}</div>

其中DTBEG数据可能为空,也可能是表示日期的 5/6 位数字。调查的标题具有:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
    var $j = jQuery.noConflict();
</script>

如其文档中所述。

因此,在jQuery中,我可以使用$j(".previous")访问该字段以前的数据,但问题是Qualtrics实际上在我的问题中放置了2个(或更多,取决于问题类型)<div class="previous date"></div>字段。 现在这非常具有误导性,因为每个嵌入的数据可能都有额外的"先前"div,因此我无法确定嵌入的数据是否为空,或者这是否是重复字段。

...
<h2 class="noStyle">
    <label class="QuestionText BorderColor">
        <div>1b. Reporting Period: End</div>
        <div class="previous date">33113</div> <!-- first instance of the div, this seems to be visible -->
    </label>
</h2>
<fieldset>
    <div class="QuestionBody">
        <table class="ChoiceStructure" border="0" cellpadding="0" cellspacing="0" summary=" 1b.&amp;nbsp; Reporting Period:&amp;nbsp; End&amp;nbsp; 33113 " style="width:710px">
        <caption class="QuestionText BorderColor">
            <div>1b. Reporting Period: End</div>
            <div class="previous date">33113</div> <!-- second instance of the div, this seems to be hidden -->
        </caption>
        ...
    </div>
</fieldset
...

有没有更好的方法来完成我想要做的事情?我写自己的JS来这样做很好,但到目前为止,因为Qualtrics的HTML输出不是我预期的,我遇到了问题。

在必要的问题中尝试以下javascript:

Qualtrics.SurveyEngine.addOnload(function()
{
$$('.QuestionBody')[0].insert($$('.previous')[0]);
});

而不是使用jQuery并且必须去麻烦,这使用PrototypeJS中烘焙的。选择器

$$('.class')

将返回一个元素数组。由于您的"上一个"类中只有并且应该只有 1 个元素,因此它是数组中的第一个也是唯一一个元素。为".QuestionBody"数组需要根据页面上的问题数量以及它们的显示位置进行调整。

还值得注意的是,

$('idName') 

可用于选择具有 id 的元素,并且不返回数组。

最新更新