0

LimeSurveyツールを使用してアンケートを作成しました。一部のカスタマイズでは、次のタスクを実装する必要があります。

スクリーンショット:

ここで、ユーザーが をクリックしたときにNext、質問のいずれかが回答されていない場合、ユーザーが回答を逃したことをユーザーに通知したいと考えています。

をクリックするとNext、確認ボックス (Javascript) が表示され、見逃したことを示すメッセージが表示されます。「わかりました、次のページに進みます」ボタンと「ここで答えます」ボタンがあります。

「わかりました。次のページに進みます」ボタンは、「次へ」ボタンと同じ機能を実行する必要があります。

「ここにいて回答します」ボタンを使用すると、ユーザーは同じページにとどまることができます。

Javascript を使用して可能であることはわかっていますが、この特定のタスクを実装する方法がわかりません。

Next ボタンの ID が「movenextbtn」であることだけはわかっています。

しかし、[次へ] ボタンをクリックし、確認ボックスを使用して次のページに進むか、同じページにとどまるときに、質問が回答されていないかどうかを確認するにはどうすればよいですか。

どんな助けでも大歓迎です。

前もって感謝します。

4

2 に答える 2

0

このコードは、ID が のボタンを持つフォーム上のラジオ ボタンのみに関心があることを前提としていますmovenextbtn。ページのどこかに挿入する必要があります。

<script>                                                                        
  // wait for everything to load                                                
  window.addEventListener('load', function() {                                  
    // let's check radio buttons when the next button is clicked   
    var nextButton = document.getElementById('movenextbtn');                    
    var form = nextButton.form;                                                 

    nextButton.addEventListener('click', function(e) {                          
      var radioElements = form.querySelectorAll('input[type="radio"]');         
      var currentRadioName;                                                     
      var seenRadioName;                                                        
      var index;                                                                
      var confirmation;                                                         

      for(index = 0; index < radioElements.length; index += 1) {                
        currentRadioName = radioElements[index].name;                           

        // check if we've already seen this named radio button set              
        if(seenRadioName != currentRadioName) {                                 
          // check that there's a checked radio button for this set of named radio buttons
          if(!form.querySelectorAll('input[type="radio"][name="' + currentRadioName + '"]:checked').length) {
            // didn't answer a question, ask if that's ok                       
            confirmation = confirm("You have missed answering a question.\n\nOK to Continue?\nCancel form submission and answer?");

            if(confirmation) {                                                  
              // the user clicked ok, let's submit the form                     
              return true;                                                      
            }                                                                   
            else {                                                              
              // the user clicked cancel, let's stop the form submission        
              e.preventDefault();                                               
              e.stopPropagation();                                              
              return false;                                                     
            }                                                                   
          }                                                                     

          // remember that we already checked this set of radio buttons         
          seenRadioName = currentRadioName;                                     
        }                                                                       
      }                                                                         
    }, false);                                                                  
  }, false);                                                                    
</script>                                                                       

ここでもっと遊ぶことができます:http://jsbin.com/howuzapi/1/edit

于 2014-08-08T09:47:33.560 に答える
0

このスクリプトを配列の質問のソースに配置します。

<script type="text/javascript" charset="utf-8"> 
$(document).ready(function() { 

    // Identify this question
    var thisQuestion = $('#question'+{QID}+'');

    // Listener on the "Next" button
    $('#movenextbtn').click(function(event){
        // Compare number of clicked radios to number of array rows
        if($('input.radio:checked', thisQuestion ).length != $('tr.answers-list',thisQuestion ).length) {
            // Pop up a confirm message
            if(confirm('You have not answered all rows.\n\nAre you sure you want to continue?')) { 
                return true;
            }
            else { 
                return false;
            }
        }
    });
});
</script>
于 2014-08-09T11:02:47.913 に答える