选中复选框时启用按钮

时间:2011-09-02 18:48:25

标签: javascript jquery html

我有多个复选框和最初禁用的提交按钮。选中一个框时,按钮被启用,当取消选中时,该按钮再次被禁用。

如果选中了多个复选框但取消选中一个复选框,即使我选择了其他复选框,该按钮也会被禁用。我该如何解决这个问题?

<script type="text/javascript"> 
$(function() {
    $(".checkbox").click(function() {
      $(".delete").attr("disabled", !this.checked);
    });
});
</script>

HTML

<input type="checkbox" name="msg[]" value="32" class="checkbox" />
<input type="checkbox" name="msg[]" value="44" class="checkbox" />
<input type="checkbox" name="msg[]" value="26" class="checkbox" />

<button type="submit" class="delete" disabled="disabled">Delete</button>

5 个答案:

答案 0 :(得分:7)

$(function() {
    $(".checkbox").click(function(){
        $('.delete').prop('disabled',$('input.checkbox:checked').length == 0);
    });
});

演示:http://jsfiddle.net/AlienWebguy/3U364/

答案 1 :(得分:2)

尝试这一点,我基本上检查是否未选中所有复选框,然后禁用按钮。

$(function() {
    $(".checkbox").click(function() {
      $(".delete").attr("disabled", !$(".checkbox:checked").length);
    });
});

答案 2 :(得分:2)

实施计数器以跟踪检查的数量,而不仅仅是禁用按钮。每次选中一个框时添加1,每次取消选中一个框时减1。一旦计数器达到0,禁用该按钮。当它变为1时,启用该按钮(如果它更改为任何更高的数字,它将被启用,因此您不必每次都启用它)。样品:

<script type="text/javascript">
var boxcounter;
$(function() {
    boxcounter = 0;
    $(".checkbox").click(function() {
        if(this.checked) {
            counter++;
            if(counter == 1){
                $(".delete").attr("disabled", "");
            }
        } else {
            counter--;
            if(counter == 0){
                $(".delete").attr("disabled", "disabled");
            }
        }
    }
}
</script>

答案 3 :(得分:0)

每次切换1个框时,您需要检查其他框的状态。

答案 4 :(得分:0)

您可以构建每个复选框的数组。 然后,循环检查已检查,并在检查时退出循环(这是您关心的)。 如果你到达循环的末尾并检查all是否为false,则禁用该按钮。

这将阻止取消选中禁用按钮。

您目前只选中“this”复选框而不是全部。