如何通过Jquery禁用asp listitem复选框

时间:2013-08-21 21:37:10

标签: jquery html asp.net forms properties

我的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不是很有经验。

谢谢!

2 个答案:

答案 0 :(得分:0)

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

$('#none').on("change", function () {
    if($('#none').attr("disabled") == false){
        $(".toppings").attr("disabled", true);
    }
    else
        $(".toppings").attr("disabled", false);
});

答案 1 :(得分: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');
         }
     });
 });

FIDDLE IT