0

更新:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="chkbox_checked_uncheked.aspx.cs"
    Inherits="Ediable_Repeater.chkbox_checked_uncheked" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>

    <script type="text/javascript">

        $(document).ready(function () {
            $('#C1All').click(function () {
                debugger
                $('.col1').attr("checked", $('#C1All').attr("checked"));
                $('.col2').removeAttr("checked");
                $('#C2All').removeAttr("checked");
            });

            $('#C2All').click(function () {
                debugger
                $('.col2').attr("checked", $('#C2All').attr("checked"));
                $('.col1').removeAttr("checked");
                $('#C1All').removeAttr("checked");
            });

            $('.col1').each(function () {
                $(this).click(function () {
                    var id = $(this).attr('id');
                    debugger
                    var coresId = id.replace('C1', 'C2');
                    $('#' + coresId).removeAttr("checked");
                    $('#C1All').removeAttr("checked");
                    $('#C2All').removeAttr("checked");
                });
            });

            $('.col2').each(function () {
                $(this).click(function () {
                    var id = $(this).attr('id');
                    var coresId = id.replace('C2', 'C1');
                    debugger
                    $('#' + coresId).removeAttr("checked");
                    $('#C1All').removeAttr("checked");
                    $('#C2All').removeAttr("checked");
                });
            });
        });
  </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div>
            <table border="1">
                <tr>
                    <td>
                        <asp:CheckBox ID="C1All" runat="server" class="col1" Text="approve all" />
                    </td>
                    <td>
                        <asp:CheckBox ID="C2All" runat="server"  class="col2" Text="Reject all" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:CheckBox ID="C101" runat="server" class="col1" Text="john 0" />
                    </td>
                    <td>
                        <asp:CheckBox ID="C201" runat="server"  class="col2" Text="john 0" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:CheckBox ID="C102" runat="server" class="col1" Text="john 1" />
                    </td>
                    <td>
                        <asp:CheckBox ID="C202" runat="server"  class="col2" Text="john all" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:CheckBox ID="C103" runat="server" class="col1" Text="john 2" />
                    </td>
                    <td>
                        <asp:CheckBox ID="C203" runat="server"  class="col2" Text="John 2" />
                    </td>
                </tr>
            </table>
        </div>
    </div>
    </form>
</body>
</html>

我有两列(全部批准/全部拒绝)我如何限制用户只允许每一个复选框?

这是屏幕的输出:

在此处输入图像描述

我尝试过这样的事情但没有奏效:

 function SelectApproveAllCheckboxes(chk, selector) 
    {     
         $('#<%=gv.ClientID%>').find(selector + " input:checkbox").each(function () 
        {                    
              $(this).prop("checked", $(chk).prop("checked"));     
         }); 
    } 
function SelectRejectAllCheckboxes(chk, selector) 
{     
     $('#<%=gv.ClientID%>').find(selector + " input:checkbox").each(function () 
    {                    
          $(this).prop("checked", $(chk).prop("checked"));     
     }); 
}  

<asp:CheckBox ID="chkAll" runat="server" onclick="SelectApproveAllCheckboxes(this, '.approve)" />     
<asp:CheckBox ID="chkAll1" runat="server" onclick="SelectRejectAllCheckboxes(this, '.reject)" />
4

5 回答 5

4

不要使用复选框,而是使用单选按钮,它们就是为此而设计的。

于 2012-05-12T00:14:45.463 回答
2

好的,根据您对我对您问题的评论部分的问题的回答,这是一个可行的解决方案。我使用了带有静态控件的 HTML 表格;但你应该能够应用这些概念。

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table border="1">
            <tr>
                <td><input type="checkbox" id="C1All" />Approve All</td>
                <td><input type="checkbox" id="C2All" />Reject All</td>
            </tr>
            <tr>
                <td><input type="checkbox" id="C101" class="col1" />John 0</td>
                <td><input type="checkbox" id="C201" class="col2" />John 0</td>
            </tr>
            <tr>
                <td><input type="checkbox" id="C102" class="col1" />John 1</td>
                <td><input type="checkbox" id="C202" class="col2" />John 1</td>
            </tr>
            <tr>
                <td><input type="checkbox" id="C103" class="col1" />John 2</td>
                <td><input type="checkbox" id="C203" class="col2" />John 2</td>
            </tr>
        </table>
    </div>
    </form>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#C1All').click(function () {
                $('.col1').attr("checked", $('#C1All').attr("checked"));
                $('.col2').removeAttr("checked");
                $('#C2All').removeAttr("checked");
            });

            $('#C2All').click(function () {
                $('.col2').attr("checked", $('#C2All').attr("checked"));
                $('.col1').removeAttr("checked");
                $('#C1All').removeAttr("checked");
            });

            $('.col1').each(function () {
                $(this).click(function () {
                    var id = $(this).attr('id');
                    var coresId = id.replace('C1', 'C2');
                    $('#' + coresId).removeAttr("checked");
                    $('#C1All').removeAttr("checked");
                    $('#C2All').removeAttr("checked");
                });
            });

            $('.col2').each(function () {
                $(this).click(function () {
                    var id = $(this).attr('id');
                    var coresId = id.replace('C2', 'C1');
                    $('#' + coresId).removeAttr("checked");
                    $('#C1All').removeAttr("checked");
                    $('#C2All').removeAttr("checked");
                });
            });
        });
    </script>
</body>

</html>

已编辑

因为在 asp.net 中,复选框嵌套在 span 标签中,所以使用这个 jquery 而不是上一个。

       $(document).ready(function () {
            $('#C1All').click(function () {
                $('.col1 > input').attr("checked", $('#C1All').attr("checked"));
                $('.col2 > input').removeAttr("checked");
                $('#C2All').removeAttr("checked");
            });

            $('#C2All').click(function () {
                $('.col2 > input').attr("checked", $('#C2All').attr("checked"));
                $('.col1 > input').removeAttr("checked");
                $('#C1All').removeAttr("checked");
            });

            $('.col1').each(function () {
                $(this).click(function () {
                    var id = $("input", this).attr('id');
                    var coresId = id.replace('C1', 'C2');
                    $('#' + coresId).removeAttr("checked");
                    $('#C1All').removeAttr("checked");
                    $('#C2All').removeAttr("checked");
                });
            });

            $('.col2').each(function () {
                $(this).click(function () {
                    var id = $("input", this).attr('id');
                    var coresId = id.replace('C2', 'C1');
                    $('#' + coresId).removeAttr("checked");
                    $('#C1All').removeAttr("checked");
                    $('#C2All').removeAttr("checked");
                });
            });
        });
于 2012-05-12T01:36:17.067 回答
0

我同意使用单选按钮。您仍然可以有一个“全选”复选框,并且可以在选中时禁用单选按钮。

如果您必须使用复选框,您可以简单地覆盖默认的单击(选中)操作以首先取消选中所有其他框。它应该是非常基本的 javascript,有或没有库。

于 2012-05-12T00:27:15.737 回答
0

试试这个:

$('input:checkbox').click(function(){
   $('input:checked').removeAttr('checked');
   $(this).attr('checked', 'checked');
});

这应该够了吧。

于 2012-05-12T00:55:38.530 回答
0

如果您使用单选按钮 prolly,您将无法获得全选功能。

您可以将组中的所有复选框赋予同一个类,并执行以下操作以使用 JQuery 取消选中它们,同时选中或取消选中被单击的复选框:

$('.checkbox').click(function{
// save the original checked state of the one we're clicking:
 var checked = $(this).attr('checked'); 
 $('.checkbox').attr('checked', false); // uncheck all of the boxes
 $(this).attr('checked', !checked); // invert the original state
});

但更好的选择可能是使用带有“以上都不是”选项的单选按钮控件。这样您就可以进行验证(这是否完全回答了问题?)

于 2012-05-12T00:56:50.307 回答