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

时间:2015-06-19 16:22:41

标签: jquery html prototypejs 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>

as explained in their documentation

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

...
<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&#39; HTML输出并不像我预期的那样会遇到问题。

1 个答案:

答案 0 :(得分:1)

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

Qualtrics.SurveyEngine.addOnload(function()
{

$$('.QuestionBody')[0].insert($$('.previous')[0]);

});

这不是使用jQuery而是必须解决这个麻烦,而是使用PrototypeJS中的烘焙。选择器

$$('.class')

将返回一个元素数组。因为&#34;之前的#34;并且应该只有1个元素。 class,它是数组中的第一个也是唯一的元素。为&#34; .QuestionBody&#34;选择的数字数组将需要根据页面上的问题数量以及它们将显示的位置进行调整。

还值得注意的是

$('idName') 

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