iT邦幫忙

1

Limesurvey進階應用--單選題隱藏或限制選擇特定選項

  • 分享至 

  • xImage
  •  

limesurvey在複選題的題型中,是將每個選項視為一個子題 (subquestion),因此每個子題都可以設定他的顯示條件。下圖中,我們可以在Relevance equation欄位中輸入條件。例如:假設我們希望在C02題選擇2時隱藏選項SQ001,我們就可以在選項SQ001的Relevance equation中輸入"{C02!=2}"。
https://ithelp.ithome.com.tw/upload/images/20250119/20142528Q4zYrp2r3n.png
但在單選題,由於每個選項並非被視為子題,因此就沒有這樣的選擇。從下圖中可以看到,單選題的介面中,並沒有如單選題一樣可以輸入條件的欄位。
https://ithelp.ithome.com.tw/upload/images/20250209/201425288ktEApiQn4.png
要達到此效果,可以透過javascript來做。假設我們要設定在C02題選擇1時限制不能選擇選項8,在C02題選2時限制不能選擇選項6。做法如下:

 <script type="text/javascript">
	$(document).ready(function() {
      var C02 = "{C02}";
      if (C02 == "01") {
        $('input[name="{C05.sgqa}"][value="08"]').prop('disabled', true);
      }
      if (C02 == "02") {
        $('input[name="{C05.sgqa}"][value="06"]').prop('disabled', true);
      }
    });
</script>

語法中大括弧{}中的內容為limesurvey的參數。在第3行中,我們用「var C02 = "{C02}"」,其中{C02}會讓limesurvey將C02的答案帶入javascript中。
若我們觀察網頁的原始碼,則可看到limesurvey將題號轉換為類似"587642X25X896"的系統代號顯示,而非使用原始的題號。因此,我們在下面的判斷式中,也需要limesurvey帶入題目的系統代號,才能讓javascript正確識別選項。例如:「$('input[name="{C05.sgqa}"][value="08"]').prop('disabled', true);」中的{C05.sgqa}就是要limesurvey顯示系統代號的語法。
假設我們的C02選擇1,則上述的javascript就會變成一下的內容:

<script type="text/javascript">
    $(document).ready(function() {
      var C02 = "01";
      if (C02 == "01") {
        $('input[name="587642X25X896"][value="08"]').prop('disabled', true);
      }
      if (C02 == "02") {
        $('input[name="587642X25X896"][value="06"]').prop('disabled', true);
      }
    });
  </script>

可看到{C02}帶入了選擇的答案1,{C05.sgqa}變成了系統代號"587642X25X896"。
而實際執行的效果如下:
https://ithelp.ithome.com.tw/upload/images/20250209/20142528eqUqZfbaAo.png
可看到選項8(幫家裡工作,沒有拿薪水)變成灰色無法選擇的狀態了。


圖片
  直播研討會

尚未有邦友留言

立即登入留言