Контроль доступа в конкретном элементе повторителя с помощью jQuery - PullRequest
0 голосов
/ 07 октября 2018

Я использую повторитель для отображения набора вопросов опроса / теста, где каждый вопрос сопровождается переключателем списка переключателей, чтобы пользователь мог выбрать опцию.

Вопросы не все перечислены на одной странице,это один вопрос за раз, когда пользователь делает выбор и нажимает «Отправить», чтобы перейти к следующему вопросу.Для этого я сохраняю текущий индекс элемента в скрытом поле и отображаю вопрос в списке вопросов, индекс элемента которого соответствует этому индексу, и скрываю другие.Когда пользователь достигает последнего вопроса, отправляется весь тест / опрос.

Моя проблема заключается в том, что мне нужно убедиться, что пользователь выбрал опцию, когда нажимает кнопку «Отправить» в каждом вопросе, прежде чем перейти к следующему вопросу, и яЯ не уверен, как получить доступ к этому конкретному списку переключателей, чтобы проверить его.

Я могу проверить весь ретранслятор (т.е. убедиться, что все списки переключателей действительны), используя следующее определение ретранслятора и 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")%>.&nbsp;<%# 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>&nbsp;&nbsp;&nbsp;&nbsp;
                </div>
            </div>
        </ItemTemplate>
    </asp:Repeater>
</div>

function validateSubmit() {
    var countQuestions = $(".survey-question").length;
    var countChecked = $(":checked", $("#surveyContainer")).length;
    return countQuestions == countChecked;
}
...