Asp.net jQuery在外面工作,但不在foreach循环中

时间:2015-08-31 08:57:28

标签: c# jquery asp.net

这是我正在使用的脚本。

$(document).ready(function () {
    $('#selectall').click(function () {
        $('.selectedId').prop('checked', isChecked('selectall'));
    });
});

function isChecked(checkboxId) {
    var id = '#' + checkboxId;
    return $(id).is(":checked");
}

function resetSelectAll() {
    // if all checkbox are selected, check the selectall checkbox
    // and viceversa
    if ($(".selectedId").length === $(".selectedId:checked").length) {
        $("#selectall").attr("checked", "checked");
    } else {
        $("#selectall").removeAttr("checked");
    }

    if ($(".selectedId:checked").length > 0) {
        $('#edit').attr("disabled", false);
    } else {
        $('#edit').attr("disabled", true);
    }
}

这是cshtml视图。

<table id="notificationsTableId">
    <thead>
    <tr role="row">
        <th rowspan="1" colspan="1">
            <input type="checkbox" id="selectall" />
        </th>
    </tr>
    </thead>
    <tbody>
    <tr class="results-table-row odd">
        <td>
            <input type="checkbox" class="selectedId" name="selectedId" onclick="resetSelectAll();"/>
        </td>
    </tr>
    <tr class="results-table-row even">
        <td>
            <input type="checkbox" class="selectedId" name="selectedId" onclick="resetSelectAll();"/>
        </td>
    </tr>
    <tr class="results-table-row even odd">
        <td>
                <input type="checkbox" class="selectedId" name="selectedId" onclick="resetSelectAll();" />
        </td>
    </tr>
    </tbody>
</table>

现在,选择按钮将按照应有的方式工作,如果我检查它将检查该表中的所有日期。 但我想要做的是我想要那个按钮来选择页面上的所有复选框。 但是如果我在foreach循环中给出一个复选框,就像这样:

@foreach (var date in group)
{
    var isoDate = date.ToString("yyMMdd");
    var day = date.ToString("ddd", new CultureInfo("sv-SE")).Substring(0, 2);
    <label style="padding-left: 10px">
        <input type="checkbox" id="selectedId" name="isoDate" value="@isoDate"/>@day-@isoDate
    </label>
}

它不起作用,它仍然只会选择页面顶部的那3个复选框。我会认为它会检查所有的复选框是否正确? 最终结果如下: enter image description here

1 个答案:

答案 0 :(得分:2)

您正在使用selectedId作为ID,而不是像其他复选框一样使用类。将它用作类属性,如下所示

@foreach (var date in group)
{
    var isoDate = date.ToString("yyMMdd");
    var day = date.ToString("ddd", new CultureInfo("sv-SE")).Substring(0, 2);
    <label style="padding-left: 10px">
        <input type="checkbox" class="selectedId" name="isoDate" value="@isoDate"/>@day-@isoDate
    </label>
}