2

我的asp控件设置如下:

<asp:CheckBoxList runat="server" ID="toppingsCheckBoxList">
                        <asp:ListItem type="checkbox" name="toppings" value="pickles" class="toppings">pickles</asp:ListItem>
                        <asp:ListItem type="checkbox" name="toppings" value="lettuce" class="toppings">lettuce</asp:ListItem>
                        <asp:ListItem type="checkbox" name="toppings" value="tomato" class="toppings">tomato</asp:ListItem>
                        <asp:ListItem type="checkbox" name="toppings" value="none" ID="none">none</asp:ListItem>
                    </asp:CheckBoxList> 

并且一直在尝试通过 Jquery 禁用复选框,就像我过去使用标准 HTML 控件的方式一样,但是使用 asp 控件并不能那么容易地工作。

到目前为止,这是我的努力:

//Jquery for topping disabling/enabling
            $(document).ready(function () {
                //disable toppings when none is selected
                $('#none').click(function () {
                    if ($("#none").selector) {
                        $(".toppings").prop("disabled", true);
                    }else
                        $(".toppings").prop("disabled", false);
                });
                //disable none when a topping is selected
                $(".toppings").click(function () {
                    $(".toppings").each(function (index, element) {
                        if (element.selector && !$("#none").selector) {
                            $("#none").prop("disabled", true);
                        }
                    });
                });
                //enable none when no topping is selected
                $(".toppings").click(function () {
                    var count = 0;
                    $(".toppings").each(function (index, element) {
                        if (!element.selector && index in [0, 1, 2]) {
                            count++;
                        }
                    });
                    if (count == 3) {
                        $("#none").prop("disabled", false);
                    }
                });
            });

如您所见,我发现我可以将 .checked 更改为 .selector 以查看已检查的内容,但实际上将 listitem 复选框更改为按类名禁用是很困难的,但我可能只是缺少简单的解决方案,因为我对 asp.net 不是很有经验。

谢谢!

4

2 回答 2

0

我即将离开工作,所以我没有足够的时间来尝试这个,但你可以试试这个作为你如何实现它的指南:

$('#none').on("change", function () {
    if($('#none').attr("disabled") == false){
        $(".toppings").attr("disabled", true);
    }
    else
        $(".toppings").attr("disabled", false);
});
于 2013-08-21T21:39:39.263 回答
0

对不起,我误解了你的问题。其实很简单:

 $(document).ready(function () {
     $('input:checkbox').click(function () {
         if ($('#none').is(':checked')) {
             $('.toppings').attr('disabled', 'disabled');
         } else {
             $('.toppings').removeAttr('disabled');
         }
         if ($('.toppings').is(':checked')) {
             $('#none').attr('disabled', 'disabled');
         } else {
             $('#none').removeAttr('disabled');
         }
     });
 });

小提琴它

于 2013-08-21T21:43:45.577 回答