您如何将相同的javascript代码应用于Qualtrics调查中的多个问题?

时间:2019-10-28 15:48:10

标签: javascript qualtrics

我的一个调查问题中包含一些javascript,它们会更改特定字段的格式。效果很好,但我想将相同的代码应用于其他几个问题。显然,我可以简单地将其复制并粘贴到每个问题上,但是有什么方法可以将代码设置在一个位置上,从而使其更易于维护?我看过许多论坛,但找不到解决方案。预先感谢您的帮助。

编辑: 这是我想针对多个问题重复的JavaScript代码:

{
    /*Place your JavaScript here to run when the page is fully displayed*/
    jQuery("#"+this.questionId+" select option:first-child").text("Select one");    

    jQuery("#"+ this.questionId + " option").each(function () {
            if (jQuery(this).text().includes("\"\"")) {
                jQuery(this).hide();    
            }else{
                title = jQuery(this).text()
                title = title.match(/".*"/)
                if(title != null && title[0].length > 30){
                    newTitle = title[0].match(/^.{30}.*?\s/)[0]
                    if(newTitle != title){
                        newTitle = newTitle + "...\""
                    }
                    text = jQuery(this).text()
                    jQuery(this).text(text.replace(title[0],newTitle))
                }   
            }
    });

});

基本上,每个联系人都会预先加载一些嵌入式数据,并且几个问题涉及一个下拉菜单,该菜单使用户可以选择自己的哪些数据元素与项目相关。此代码确保下拉列表中不包含空白或丢失的数据,并且如果该选项的字符数过多,则该字符将被截断。多个问题包括相同的下拉选项,但在其他方面有所不同。

2 个答案:

答案 0 :(得分:1)

将相同的类添加到每个问题中(我选择了myQuestion类),然后对其进行查询。

依次遍历每个选择,然后依次findoption:first-childfind option,然后遍历它们。

$('.myQuestion select').each(function(selectIndex, select){

  // loop through each select
  // for each select find all the options
  
  $(this).find("option:first-child").text("Select one");
  
  $(this).find('option').each(function(optionIndex, option){
    console.log(`select (${selectIndex}) | option (${optionIndex})`);
    
    // your code here
    
  });
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="myQuestion">
  <select>
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </select> 
</div>

<div class="myQuestion">
  <select>
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </select> 
</div>

答案 1 :(得分:1)

使您的代码具有功能并将其放在Qualtrics标头中。从适用的每个问题中调用该函数。

在标题中:

<script>
myFunction(qobj) {
   jQuery("#"+qobj.questionId+" select option:first-child")...etc...
}
</script>

然后在您的问题中:

Qualtrics.SurveyEngine.addOnload(function() {
  myFunction(this);
});