复选框计数 select 全部

checkbox count with select all

我必须使用 select all 选项创建复选框计数,当每个复选框我 select 计数有效但当 select all 选项它不起作用时它工作我'我在 ASP.NET MVC 中实现,这是我的代码 javascript

var countChecked = function () {
        var n = $('input[name="DocNames"]:checked').length;
        $("#span").text(n + (n === 1 ? " document is" : " documents are") + " checked!");
    };
    countChecked();
    $('input[name="DocNames"]').on("click", countChecked);

    $('#select_all').click(function (e) {
        $(this).closest('table').find('td input[name="DocNames"]').prop('checked', this.checked);
    })

html代码

<table class="table">
<tr>
    <th>Documnet Name</th>
</tr>
<tr>
    <td><label><input type="checkbox" name="select_all" id="select_all" />Select All</label></td>
</tr>
@if (Model.Documents != null)
{
    foreach (var item in Model.Documents)
    {
        <tr>
            <td>
                <label>
                    <input type="checkbox" name="DocNames" value="@item.DocumentName.Trim()" />
                    @item.DocumentName.Trim()
                </label>
            </td>
        </tr>
    }
}
else
{

    <tr>
        <td>@ViewBag.NoDocuments</td>
    </tr>
}

<div id="span"></div>

如果你还没有按照@Andreas 的建议解决你的问题(这是正确的答案),我会用答案格式再说一遍:

在您的代码中,您在每个复选框的点击事件上调用了 countChecked()。因此,countChecked() 会执行它的操作。

但是在 SelectAll 复选框的事件处理程序中,您忘记再次调用 countChecked()。

因此您必须在代码末尾调用它,如下所示:

$('#select_all').click(function (e) {
    $(this).closest('table').find('td input[name="DocNames"]').prop('checked', this.checked);
    countChecked();
})

或者,更笨拙地触发任何复选框的点击事件。

不过以上是最好的