我正在使用中继器显示一组调查/测试问题,其中每个问题后都有一个单选按钮列表控件,供用户选择选项。
并非所有问题都在一个页面中列出,它是用户一次选择并单击“提交”转到下一个问题的一次问题。为此,我将当前项目索引保留在隐藏字段中,并在项目索引与此索引匹配的问题列表中显示该问题,然后隐藏其他项目。当用户遇到最后一个问题时,将提交整个测试/调查。
我的问题是,在进入下一个问题之前,我需要确保用户在每个问题上单击“提交”按钮时都选择了一个选项,而且我不确定如何访问此特定的单选按钮列表以进行验证。 / p>
我可以使用以下中继器定义和jQuery验证整个中继器(即确保所有单选按钮列表均有效)
<asp:HiddenField runat="server" ID="hfItemIndex" ClientIDMode="Static" />
<div id="surveyContainer">
<asp:Repeater runat="server" ID="rptQuestions" OnItemDataBound="rptQuestions_ItemDataBound">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<div runat="server" id="divCurrQuestion">
<asp:HiddenField runat="server" ID="hfQuestionID" Value='<%# Eval("QuestionID")%>' />
<div class="row">
<div class="col-centered col-sm-12">
<label><%# Eval("QuestionOrder")%>. <%# Eval("QuestionText")%></label>
</div>
</div>
<div class="survey-question">
<div class="row" style="padding-left:20px;">
<asp:RadioButtonList runat="server" ID="rblAnswers" RepeatDirection="Vertical" DataTextField="Answer" DataValueField="AnswerID"></asp:RadioButtonList>
</div>
</div>
<div id="divSubmitErr" runat="server" clientidmode="static" class="alert-danger" style="margin:10px 0 10px 0;display:none">Plese make a selection</div>
<div id="divButtons" style="text-align: center;">
<button id="btnNext" runat="server" clientidmode="static" class="btn btn-primary" aria-hidden="true" aria-label="Submit" causesvalidation="true" validationgroup="vgAnswer" >Submit</button>
<button id="btnSubmitTest" runat="server" clientidmode="static" class="btn btn-primary" aria-hidden="true" aria-label="Submit" style="display:none">Submit</button>
<button id="btnCancelTest" class="btn btn-info2" data-dismiss="modal" aria-hidden="true" aria-label="Cancel">Cancel</button>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
</div>
function validateSubmit() {
var countQuestions = $(".survey-question").length;
var countChecked = $(":checked", $("#surveyContainer")).length;
return countQuestions == countChecked;
}