【问题标题】:Check all checkbox by clicking on 1 checkbox通过单击 1 个复选框选中所有复选框
【发布时间】:2015-05-12 07:23:01
【问题描述】:
  <asp:DataList runat="server" ID="dl1" OnItemDataBound="cb1">               
                  <ItemTemplate>
                    <div style="display: table;">
                        <div style="display: table-row;">
                            <div style="display: table-cell;">
                                <asp:CheckBox ID="Cb1"                 runat="server"/></div>
                            <div style="display: table-cell;">
                                <asp:CheckBox ID="cb2" runat="server" /></div>                                                       
                        </div>
                    </div>
                </ItemTemplate>
            </asp:DataList>

在这里,我想要一个 jquery/javascript,如果我选择 cb1,则应自动选择 cb2,反之亦然。

我正在尝试这个:但是任何人都可以帮助我。

<script type="text/javascript">

    var d1Control = document.getElementById('<%= dl1.ClientID %>');
    $('input:checkbox[id$=cb1]', d1Control ).click(function (e) {
        if (this.checked) {
            $('input:checkbox[id$=cb2]', d1Control ).attr('checked', true);
        }
        else {
            $('input:checkbox[id$=cb2]', d1Control ).removeAttr('checked');
        }
    });
</script>

【问题讨论】:

  • 你的代码有什么问题?
  • 这个可能重复吗? stackoverflow.com/questions/28928636/…
  • 我不太确定,但您可以尝试使用$(this).attr("checked") 作为条件(this 可能不指向复选框,实际上指向document)。此外,它可能与click 事件和checked 状态更改如何相互定时有关。
  • @Mouser 我的代码选择了所有复选框,而不是它在数据列表中对应的复选框。
  • 您不能在Repeater 控件中使用ID,除非您使它们动态化以使其对文档唯一。此外,您应该使用prop,而不是attr 来设置布尔属性,例如checkeddisabled

标签: javascript c# jquery asp.net datalist


【解决方案1】:

也许这会有所帮助?

$('id$=cb1').click(function () {
    if ($(this).is("checked")) {
        $('id$=cb2').attr('checked' true);
    } else {
        $('id$=cb2').attr('checked', false);
    }
});

【讨论】:

    【解决方案2】:

    这是有一个“全选”复选框。您选中一个框,它会为您选择所有复选框。

       $('#cb1').click(function () {
                var selectAll = $("#cb1").is(":checked");
                if (selectAll)
                {
                    $('input[type=checkbox]').attr("checked", true);
                }
                if (!selectAll)
                {
                    $('input[type=checkbox]').attr("checked", false);
                }
    
            });
    

    如果您希望它只影响特定的复选框 (cb2):

          $('#cb1').click(function () {
                var selectAll = $("#cb1").is(":checked");
                if (selectAll)
                {
                    $('id$=cb2').attr("checked", true);
                }
                if (!selectAll)
                {
                    $('id$=cb2').attr("checked", false);
                }
    
            });
    

    【讨论】:

      【解决方案3】:
              $('#checkAll').click(function(){
                  if($(this).is(':checked')){
                      $('input[type=checkbox]').prop('checked', true)
                  }else{
                      $('input[type=checkbox]').prop('checked', false)
                  }
              })
      

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      • 这个答案唯一的用途是使用prop 而不是attr,但没有解释为什么这样更好,它不是很有用。此外,该代码不适用于 OP,因为它们使用的是 ASP.NET Repeater 控件,因此具有多个具有相同 ID 的元素,这会导致进一步的问题。
      • 请在代码中添加解释以获得更完整和详细的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      相关资源
      最近更新 更多