0

我在 asp.net 的 web 表单页面上有一个 checkboxlist 控件,如下代码:

<div>
<asp:CheckBoxList ID="CheckBoxList1" runat="server" CssClass="cbxlMulti">
    <asp:ListItem Value="AAAA">AAAA</asp:ListItem>
    <asp:ListItem Value="BBBB">BBBB</asp:ListItem>
    <asp:ListItem Value="CCCC">CCCC</asp:ListItem>
</asp:CheckBoxList>
</div>

此代码由 asp.net 解析为 HTML:

<div>
<table id="ContentPlaceHolder1_CheckBoxList1" class="cbxlMulti">
  <tbody>
    <tr>
      <td>
        <input id="ContentPlaceHolder1_CheckBoxList1_0" type="checkbox" name="ct100$ContentPlaceHolder1$CheckBoxList1$0" value="AAAA">
        <label for="ContentPlaceHolder1_CheckBoxList1_0">AAAA</label>
      </td>
    </tr>
    <tr>
      <td>
        <input id="ContentPlaceHolder1_CheckBoxList1_1" type="checkbox" name="ct100$ContentPlaceHolder1$CheckBoxList1$1" value="BBBB">
        <label for="ContentPlaceHolder1_CheckBoxList1_1">BBBB</label>
      </td>
    </tr>
    <tr>
      <td>
        <input id="ContentPlaceHolder1_CheckBoxList1_2" type="checkbox" name="ct100$ContentPlaceHolder1$CheckBoxList1$2" value="BBBB">
        <label for="ContentPlaceHolder1_CheckBoxList1_2">BBBB</label>
      </td>
    </tr>

和另一个复选框:

<div>
<asp:CheckBox ID="CheckBox1" runat="server" CssClass="cbxSingle" Text="XXXX" />
</div>

我想检查 CheckBoxlist1 中选中的项目数是否超过 1,如果是,则 CheckBox1 将被自动检查。我想使用 jQuery 来实现这一点。

4

5 回答 5

1

尝试这个

if($('#CheckBoxList1 :checkbox:checked').length > 0){
    $('#CheckBox1').attr('checked','checked');
   //OR
    $('#CheckBox1').prop('checked', true);
   }

更新

$(function(){
    $("input[type=checkbox]").click(function () {
      var a= $("input[id^='ContentPlaceHolder1_CheckBoxList1']:checkbox:checked");

      if($(a).length > 0){
        $('#CheckBox1').attr('checked','checked');           
       }
      else
        $('#CheckBox1').removeAttr('checked');
    });
});

演示

于 2013-08-12T07:55:47.587 回答
1

试试看,

$(function(){
    if ($('.cbxlMulti').find(':checkbox:checked').length > 1){
         $('.cbxSingle:checkbox').prop('checked',true);
    }
});
于 2013-08-12T07:59:21.827 回答
1

尝试这个

假设一个变量,初始化为 0.then foreach 循环所有选中的复选框并添加到变量中。之后检查变量值是否大于 1,然后检查另一个复选框。

var count=0;
$('#ContentPlaceHolder1_CheckBoxList1 input:checkbox:checked').each(function () {
count=count+1;
});

if(count>1)
{
$('#CheckBox1').attr('checked');
}
于 2013-08-12T09:34:27.670 回答
0

尝试

if ($('#CheckBoxList1 :checkbox:checked').length > 0){

    //check that
}
于 2013-08-12T07:54:56.177 回答
0

您应该更改您的 id,以便使用静态 id,以便 ASP.NET 在呈现时不会更改您的 id。

<div>
    <asp:CheckBox ID="singleCheckBox" runat="server" CssClass="cbxSingle" ClientIDMode="Static" Text="XXXX" />
</div>

<script type="text/javascript">
    $('.cbxlMulti input[type=checkbox]').change(function () {
        $('#singleCheckBox').prop('checked', $('.cbxlMulti input[type=checkbox]:checked').length > 0);
    });
</script>

注意如果没有选择任何项目,这也将取消选中单个复选框。如果您想在至少检查一次后保持检查,那么您必须执行以下操作

<script type="text/javascript">
    $('.cbxlMulti input[type=checkbox]').change(function () {
        $('#singleCheckBox').prop('checked', $('#singleCheckBox').is(':checked') || $('.cbxlMulti input[type=checkbox]:checked').length > 0);
    });
</script>
于 2013-08-12T08:14:52.620 回答