Итерация по элементам повторителя на стороне клиента - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть повторитель, где каждый элемент содержит флажок и дату;это позволяет пользователю выбирать набор дат.При подаче я хочу проверить, являются ли выбранные даты смежными, на стороне клиента.Я могу получить доступ к каждому элементу повторителя, используя назначенные классы для флажков и дат (как метки), но не знаю, как проверить, установлен флажок или нет.

Это то, что у меня есть (я удалил ненужные вещи):

<ItemTemplate>
    <tr>
        <td >
            <asp:Checkbox runat="server" ID="cbSelectedDate" CssClass="partialCB" />
        </td>
        <td>
            <asp:Label runat="server" ID="lblDate" CssClass="partialDate" Text='<%# Eval("DATE_STR")%>'  ></asp:Label>
        </td>
        <td>
            <asp:CheckBox runat="server" ID="cbHoliday" Checked='<%# Eval("ISHOLIDAY")%>' Enabled="false" ></asp:CheckBox>
        </td>
    </tr>
</ItemTemplate>

Выше приведено на странице, например:

<td>
    <span class="partialCB"><input id="ctl00_MainContent_rptSchedule_ctl01_cbSelectedDate" type="checkbox" name="ctl00$MainContent$rptSchedule$ctl01$cbSelectedDate" /></span>
</td>
<td>
    <span id="ctl00_MainContent_rptSchedule_ctl01_lblDate" class="NormalSmall partialDate">3/15/2019</span>
</td>

При нажатии кнопки «Отправить» вызывается следующая функция проверки:

function validSubmission() {debugger
    var isValid = true;

    // a bunch of vars and other stuff

    isValid = getPartialDates();
    return isValid;
}

function getPartialDates() {   
    var spans = document.getElementsByTagName('span');  
    var l = spans.length;  

    // Iterate through spans
    for (var i = 0; i < l; i++) {  
        var spanClass = spans[i].getAttribute("class");  

        // checkboxes in repeater have class "partialCB"   
        if (spanClass === "partialCB") {
            var v = spans[i].innerHTML;

            //  How do I do this? innerHTML has checkbox tag
            if (checkbox is checked) {
                var selDate = spans[i + 1].innerText;
            }
        }  
    }  
...