2014-09-11 80 views
0

asp:DataList已經生成了下面的html。 A Q &表格,其中每個集合都有Qno,問題和選項。獲取Array數據到表 - jquery

//Repeating Set 
<table id="tblQuestions" class="tblQuestions"> 
<tr><td><span class="lbQno">1</span><span>First question</span></td></tr> 
<tr> 
    <td> 
    <table class="clOptions"> 
    <tr> 
     <td><input type="radio" value="1/><label>sometext</label</td> 
     <td><input type="radio" value="2/><label>sometext</label</td> 
     <td><input type="radio" value="3/><label>sometext</label</td> 
    </tr> 
    </table> 
    </td> 
</tr> 
</table> 

點擊一個按鈕,我想檢查所有問題都回答。

JS:

//Get the questionslist 
//Loop thro' them, assigning each list to a table. 
// and then get the Qno and optionslist in that table 

var QuestionsList = document.getElementsByClassName("tblQuestions"); 
function AllQuestionsAnswered() { 

    for(var i = 0;i<QuestionsList.length;i++) 
    { 
     var tbl = QuestionsList[i];      
     var OptionsList = $('tbl.clOptions input:radio'); 

     $('tbl tr').each(function() { 
      var QuestionNo = $(this).find('.lbQno').text(); 
      if(QuestionId > 0){     
       //perform check on each radiobutton of question 
      }       
     }); 
    } 
} 

我沒有在這裏如何得到控制。 for循環中的所有3個定義都不起作用。我應該如何繼續下去。

+1

'getElementsByClassName'應該是'getElementById'。你也在你的html中缺少一些''''和'>''''''''' – TeeDeJee 2014-09-11 12:06:50

+0

元素的ID必須是唯一的。所以你不能爲每個問題重複相同的表結構 – 2014-09-11 12:20:12

+0

所以它應該是'class =「tblQuestions」 '在HTML – sabithpocker 2014-09-11 12:20:58

回答

1

讓我們假設你可以糾正與HTML的所有問題:

  • 缺少input的價值"
  • 失蹤name對於input s。
  • 缺失></label>

然後,您可以使用此代碼檢查所有必要的問題。

  • 過濾所有應該檢查的問題(基於.lbQno文本)。
  • 對於每個過濾的問題:
    • 獲取當前問題的選定單選按鈕的長度。
    • 如果沒有選定的單選按鈕(length等於0),則顯示錯誤並停止檢查。

的JavaScript:

$(document).ready(function() 
{ 
    function filterElement() 
    { 
     return parseInt($(this).find(".lbQno").text()) > 0; 
    } 

    $('#check').click(function() 
    { 
     $(".tblQuestions").filter(filterElement).each(function() 
     { 
      var checkedCount = $(this).find('.clOptions input:radio:checked').length; 
      if (!checkedCount) 
      { 
       alert($(this).find(".lbQno").next().text() + " is not answered"); 
       return false; 
      } 
     }); 
    }); 
}); 

Fiddle

相關HTML:

<table id="tblQuestions1" class="tblQuestions"> 
<tr><td><span class="lbQno">1</span><span>First question</span></td></tr> 
<tr> 
    <td> 
    <table class="clOptions"> 
    <tr> 
     <td><input type="radio" name="q1" value="1"/><label>sometext</label></td> 
     <td><input type="radio" name="q1" value="2"/><label>sometext</label></td> 
     <td><input type="radio" name="q1" value="3"/><label>sometext</label></td> 
    </tr> 
    </table> 
    </td> 
</tr> 
</table> 

<table id="tblQuestions2" class="tblQuestions"> 
<tr><td><span class="lbQno">1</span><span>Second question</span></td></tr> 
<tr> 
    <td> 
    <table class="clOptions"> 
    <tr> 
     <td><input type="radio" name="q2" value="1"/><label>sometext</label></td> 
     <td><input type="radio" name="q2" value="2"/><label>sometext</label></td> 
     <td><input type="radio" name="q2" value="3"/><label>sometext</label></td> 
    </tr> 
    </table> 
    </td> 
</tr> 
</table> 

<table id="tblQuestions3" class="tblQuestions"> 
<tr><td><span class="lbQno">0</span><span>Unnecessary question</span></td></tr> 
<tr> 
    <td> 
    <table class="clOptions"> 
    <tr> 
     <td><input type="radio" name="q0" value="1"/><label>sometext</label></td> 
     <td><input type="radio" name="q0" value="2"/><label>sometext</label></td> 
     <td><input type="radio" name="q0" value="3"/><label>sometext</label></td> 
    </tr> 
    </table> 
    </td> 
</tr> 
</table> 

<input id="check" type="button" value="check"/> 
+0

非常感謝。 – Qwerty 2014-09-11 13:22:38

+0

@Qwerty不用客氣。 – Regent 2014-09-11 13:25:50