2015-06-19 63 views
1

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

所以在问题文本,我有:

<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>领域。这很容易让人误解,因为每个嵌入数据都可能有额外的“先前”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输出不是我期望遇到的问题。

回答

1

尝试在必要的问题,下面的JavaScript:

Qualtrics.SurveyEngine.addOnload(function() 
{ 

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

}); 

而不是使用jQuery和不得不去那个麻烦,这里采用的烘烤PrototypeJS。选择器

$$('.class') 

将返回一个元素数组。既然你的“上一个”类只有1个元素,它是数组中第一个也是唯一的元素。为“.QuestionBody”数组选择的数字将需要根据页面上的问题数量以及它们将显示的位置进行调整。

还值得注意的是

$('idName') 

可用于选择与ID的元素,并且不返回的数组。

+0

它也值得添加一个prototypejs标签到你的问题,因为它是烤到Qualtrics –

+0

啊,好的电话,我会试试这个 – WOUNDEDStevenJones

+0

希望它适合你。 –