javascript - asp.net/jQuery 全选仅适用于选项卡内

标签 javascript jquery asp.net

我正在渲染不同的日期,但我没有报告时间。

如果时间跨度超过 1 个月,它将在右侧选项卡下呈现每个月和日期。如果日期仅在 1 个月内,则只会呈现日期。

但我的问题是,当日期不在选项卡下时,我的“全选”复选框不起作用。

这是我的脚本:

$(function () {
    $(".selectAll").on("click", function () {
        if ($(this).is(':checked')) {
            $(this).closest('.panel-default').find("input[name='isoDate']").prop('checked', this.checked);
            $('input[name="isoDate"]').trigger('change');
        } else {
            $(this).closest('.panel-default').find("input[name='isoDate']").prop('checked', false);
            $('input[name="isoDate"]').trigger('change');
        }
    });
});

这是 View :

@if (ViewBag.MissingDays != null)
{
    int i = 0;
    var months = ((List<DateTime>)ViewBag.MissingDays).GroupBy(x => x.Month);
    IEnumerable<IGrouping<int, DateTime>> groups = months as IList<IGrouping<int, DateTime>> ?? months.ToList();
    foreach (var group in groups)
    {
        i++;
        var month = CultureInfo.CreateSpecificCulture("sv-SE").DateTimeFormat.GetMonthName(group.Key);
        if (groups.Count() > 1)
        {
            <div class="panel-group accordion" id="accordion1">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h4 class="panel-title">
                            <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion1" href="#collapse_@i">
                                @month
                            </a>
                        </h4>
                    </div>
                    <div id="collapse_@i" class="panel-collapse collapse">
                        <div class="panel-body">
                            <div class="col-md-12">
                                <label>
                                    <input type="checkbox" class="selectAll" name="all"/>
                                    Välj alla.
                                </label>
                                <br/>
                                @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>
                                }
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        }
        else
        {
            <div class="col-md-12">
                <label>
                    <input type="checkbox" class="selectAll" name="all" />
                    Välj alla.
                </label>
                @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>
                }
            </div>
        }
    }
}

最佳答案

假设您仅在日期在 1 个月内时遇到问题,因此不会有任何选项卡。将简单地呈现日期。

请尝试使用以下修改后的脚本:

$(function () {
    $(".selectAll").on("click", function () {
        if ($(this).is(':checked')) {
            if($(this).closest('.panel-default').length > 0)
                $(this).closest('.panel-default').find("input[name='isoDate']").prop('checked', this.checked);
           else
                $("input[name='isoDate']").prop('checked', this.checked);
            $('input[name="isoDate"]').trigger('change');
        } else {
            if($(this).closest('.panel-default').length > 0)
                $(this).closest('.panel-default').find("input[name='isoDate']").prop('checked', false);
            else
                $("input[name='isoDate']").prop('checked', false);
            $('input[name="isoDate"]').trigger('change');
        }
    });
});

关于javascript - asp.net/jQuery 全选仅适用于选项卡内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32346881/

相关文章:

javascript - highcharts 下载/导出带有圆形边框的图像

javascript - react setstate 不触发关闭 MUI 对话框

Javascript 返回和 if/else

php - 以复选框形式显示表格内容

asp.net - 如何从CLASS(类内部)调用ASPX页面

javascript - 可以从空表中选择 * 吗?

javascript - 创建数组,使用 $.each 循环,如果不在数组中则添加值

javascript - 使用 Ruby on Rails 和 Turbolinks 页面更改后 jQuery 计时器继续滚动

javascript - 滚动到特定的 id

c# - GridView : Cant remove borders