Как применить один и тот же код JavaScript к нескольким вопросам в опросе Qualtrics? - PullRequest
1 голос
/ 28 октября 2019

У меня есть несколько 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 ]

1 голос
/ 28 октября 2019

Сделайте ваш код функцией и поместите его в заголовок Qualtrics. Вызовите функцию из каждого вопроса, к которому она относится.

В шапке:

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

Тогда в ваших вопросах:

Qualtrics.SurveyEngine.addOnload(function() {
  myFunction(this);
});
1 голос
/ 28 октября 2019

Добавьте один и тот же класс к каждому вашему вопросу (я выбрал myQuestion class), затем запросите его.

Переберите каждый выбор и find the option:first-child, а затем find the option s и цикл через каждый из них.

$('.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>
...