2015-11-25 119 views
0

我有兩個單選按鈕,每個都有四個問題。用戶必須爲每個問題選擇是或否。在頁面上使用jquery獲取單選按鈕的所有值

用戶必須在所有問題中回答「是」才能繼續使用該應用。 使用下面的jQuery代碼,如果用戶只回答2個問題,tempArray變量中只報告2個答案。

我希望能夠看到所有4個答案,無論回答或不答覆tempArray。然後我就可以遍歷數組,並確定 是空的答案或無

例 回答了所有 1.是 2.Yes 。是的 4.Yes

沒有回答所有 1.是 2.空 3.空 4.無

 <script language="javascript" type="text/javascript">  

      $('#Continue').click(function() { 

       var $RButtons = $('input[type="radio"]'); 
       var tempArray = new Array(); 

       var i = 0; 
       jQuery.each($RButtons, function() { 
        if ($(this).is(':checked')) { 
         var value = $(this).attr('value'); 
         tempArray[i] = value; 
         i++; 
        } 
       }); 

      }) 

     </script> 

回答

0

你必須跳過兩個。

var $rb = $('input:radio') 
    var tempArray = new Array(); 
    var questionNo = 0; 
    for (var i = 0; i < $rb.length; i += 2) { 
     tempArray[questionNo] = "Question " + (questionNo + 1) + " is "; 
     if ($($rb[i]).is(':checked')) {    
     tempArray[questionNo] += $($rb[i]).attr('value'); 
     } 
     else if ($($rb[i + 1]).is(':checked')) { 
     tempArray[questionNo] += $($rb[i + 1]).attr('value'); 
     } 
     else { 
     tempArray[questionNo] += " is null"; 
     } 
     questionNo++; 
    } 
+0

非常感謝。你能解釋一下跳過兩個和if語句嗎?它工作得很好。 – user2320476

+0

因爲每個問題你應該有兩個無線電。所以對於每一對,如果有人被檢查,取其值,否則它是空的。 –

0

我沒有testet這一點,但我看到一些親與您的代碼blems:

 $('#Continue').click(function() { 

      var $RButtons = $('input[type="radio"]'); 
      var tempArray = new Array(); 

      var value; 
      jQuery.each($RButtons, function() { 
       if ($this.prop('checked', true)) { // jQuery 1.6+ 
        value = $(this).val(); 
        tempArray.push(value); 
       } 
      }); 
     }) 
  1. 您可以使用$this.prop("checked", true)來檢查單選按鈕被選中與否(jQuery的1.6+)
  2. 你應該使用簡單$(this).val()確定複選框的值。
  3. 你不必使用你的樣子計數器,只需要使用.push

希望有所幫助。

0

您可以試試這個。

$('#Continue').click(function() { 
       $('div').empty(); 
       var tempArray = new Array(); 
        for (var i=1; i <= 4; i++) 
        {  
         var name = "q" + i; 
         var answered = false; 
         $('input:radio[name="' + name + '"]').each(function() {         
          if(!answered) 
          { 
           if($(this).is(":checked")) 
           { 
            tempArray.push("Question : " + i + ", Answer : " + $(this).attr("value")); 
            answered = true;         
           }        
          } 
         }); 
         if(!answered) 
           tempArray.push("Question : " + i + ", Answer : Null "); 
        } 


    $.each(tempArray,function(i) 
       { 
        $('div').append(tempArray[i] + "<br/>"); 
       }); 



      }); 

工作例如:http://jsfiddle.net/86829ryz/17/

相關問題