iT邦幫忙

0

Limesurvey進階應用--為單選題加上提示視窗

  • 分享至 

  • xImage
  •  

有時,當填答者選擇某些情境時,我們可能會希望對受訪者進行提示,這個時候我們就可以加入一個提醒視窗,讓填答者注意到我們的說明。在這篇文章中,我們將用javascript的alert功能,為單選題插入一個彈出視窗。在做法上其實算是之前另一篇Limesurvey進階應用--數值題範圍設定與彈出確認視窗的延伸,只是情境不同,對應的題型也不同,所以會稍微有點差異。

題目設計情境

我們設計一個題目詢問填答者目前是否有工作,並包含4個選項。題目如下:
C02. 請問您目前有工作嗎?
  (01) 有,從事有收入的工作      (03) 有,目前留職停薪中
  (02) 有,幫家裡工作沒有拿薪水  (04) 沒有

其中,對於選擇「(03) 有,目前留職停薪中」的填答者,我們希望提示,請他以留職停薪前的情形回答後續問題。
這個提示可以選擇做在C02題,也就是在進入下一題之前顯示;或做在下一題,也就是跳到下一題後,在題目出現之前顯示。

在進入下一題之前跳出提示

我們可以在題目的原始碼中加入下面的javascript:

<script type="text/javascript">
$(document).ready(function() {
    // 監聽「下一頁」按鈕的點擊事件
    $('#ls-button-submit').on('click', function(e) {
      var selectedValue = $("input[name='{self.sgqa}']:checked").val();
      if (selectedValue == '03') {
        // 阻止表單提交
        e.preventDefault();
        // 顯示提醒視窗
       alert('您目前留職停薪中,請按照留職停薪前的情況回答以下問題。');
        $(this).off('click');
        $('#ls-button-submit').click();
       }
      
    });
  });
</script>

說明:
我們以slelectedValue取得選項03的值,以判斷是否選擇03。其中{self.sgqa}是limesurvey的代碼,可以帶入題目實際的id。接著我們用if判斷式決定是否跳出彈出視窗。
我們設定的操作邏輯是,若填答者選擇03,則在他點選「確定」進入下一題是,先阻擋提交,顯示alert,在填答者點選alert的關閉按鈕後,再重新執行提交跳至下一題。
實際效果如下:
https://ithelp.ithome.com.tw/upload/images/20241029/20142528ld1P3zuPFI.png

進入下一題後,在題目顯示前跳出提示

這樣的提示,我們也可以做在下一題或之後有需要的任何題目顯示之前。語法如下:

<script type="text/javascript">
  $(document).ready(function() {
    // 在C03頁面顯示前檢查C02的選擇
      if ({C02.code} == '03') {
      // 顯示自訂彈出視窗
   alert('您目前留職停薪中,請按照留職停薪前的情況回答以下問題。');
    }
  });
</script>

其中{C02.code}是Limesurvey語法,用以取得C02的答案。將這段語法貼如下一題(假設為C03題)的題目原始碼內。當C02選擇03時,在進入C03題之前,就會先顯示下面的畫面,要點選「關閉」後才會看到C03的題目。
https://ithelp.ithome.com.tw/upload/images/20241029/20142528SLIKP5iocv.png
此外,如果希望在某些題目顯示之前,一律先以彈出視窗提示說明,可以講語法中的if判斷式拿掉,則進入該題時彈出視窗就一律都會出現了。

更上層樓

不管是本篇使用的alert或者Limesurvey進階應用--數值題範圍設定與彈出確認視窗所使用的confirm都是javascript內建的功能,雖然使用簡便,但因為只能顯示純文字,因此無法加上色彩或字型變化,對於某些重要提示而言,可能不夠醒目。若要進一步強化,就要配合css和div自訂彈出視窗了。這部分請容我賣個關子,下期待續......


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言