Saya memiliki beberapa javascript di salah satu pertanyaan survei saya yang mengubah format bidang tertentu. Ini berfungsi dengan baik, tetapi saya ingin menerapkan kode yang sama untuk beberapa pertanyaan lain. Jelas, saya cukup menyalin dan menempel ke setiap pertanyaan, tetapi apakah ada cara untuk mengatur kode di satu lokasi sehingga lebih dapat dipelihara? Saya telah mencari di sejumlah forum tetapi belum dapat menemukan solusi. Terima kasih sebelumnya atas bantuan Anda.

EDIT: Ini adalah kode JavaScript yang ingin saya ulangi untuk beberapa pertanyaan:

{
    /*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))
                }   
            }
    });

});

Pada dasarnya, ada beberapa data tertanam yang dimuat sebelumnya untuk setiap kontak, dan beberapa pertanyaan melibatkan menu tarik-turun yang memungkinkan pengguna memilih elemen data mana yang relevan dengan proyek. Kode ini memastikan bahwa data kosong atau hilang tidak disertakan dalam dropdown, dan juga jika opsi terlalu banyak karakter, itu akan terpotong. Beberapa pertanyaan menyertakan opsi tarik-turun yang sama, tetapi berbeda dalam cara lain.

1
Brent Underwood 28 Oktober 2019, 18:48

2 jawaban

Jawaban Terbaik

Jadikan kode Anda berfungsi dan letakkan di header Qualtrics. Panggil fungsi dari setiap pertanyaan di mana itu berlaku.

Di tajuk:

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

Kemudian dalam pertanyaan Anda:

Qualtrics.SurveyEngine.addOnload(function() {
  myFunction(this);
});
1
T. Gibbons 28 Oktober 2019, 20:04

Tambahkan kelas yang sama ke setiap pertanyaan Anda (saya memilih kelas myQuestion) lalu tanyakan.

Ulangi setiap pilihan dan find option:first-child lalu find option dan ulangi masing-masing.

$('.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
kemicofa ghost 28 Oktober 2019, 16:58