我有多个复选框和最初禁用的提交按钮。选中一个框时,按钮被启用,当取消选中时,该按钮再次被禁用。
如果选中了多个复选框但取消选中一个复选框,即使我选择了其他复选框,该按钮也会被禁用。我该如何解决这个问题?
<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>
答案 0 :(得分:7)
$(function() {
$(".checkbox").click(function(){
$('.delete').prop('disabled',$('input.checkbox:checked').length == 0);
});
});
答案 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”复选框而不是全部。