2015-09-02 93 views
0

我正在渲染不同的日期,我还没有报告过。asp.net/jQuery选择所有只在标签内工作

如果时间跨度超过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'); 
     } 
    }); 
}); 

而且本所认为:

@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="#[email protected]"> 
           @month 
          </a> 
         </h4> 
        </div> 
        <div id="[email protected]" 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"/>@[email protected] 
            </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" />@[email protected] 
        </label> 
       } 
      </div> 
     } 
    } 
} 
+0

你想添加你的屏幕形象? – Lali

回答

1

假设你只有在情况下,面对问题时的日期是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'); 
     } 
    }); 
}); 
+0

这很有效,感谢您的快速回复。 –

+0

我的荣幸... :) – vijayP

+0

我看到你没有得到它的工作,是有道理的。对此还是有点新的。 –