繁体   English   中英

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

[英]How do you apply the same javascript code to multiple questions in Qualtrics survey?

我的一个调查问题中有一些 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))
                }   
            }
    });

});

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

将您的代码设为 function 并将其放入 Qualtrics header。 从适用的每个问题中调用 function。

在 header 中:

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

然后在你的问题中:

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

将相同的 class 添加到您的每个问题(我选择了myQuestion类)然后查询它。

循环遍历每个 select 并find option:first-child然后find 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM