2011-05-01 21 views

Respuesta

15

sólo tiene que comprobar la propiedad length de la matriz comprobado

$('.check').change(function() { 
    if ($('.check:checked').length) { 
     $('#sub').removeAttr('disabled'); 
    } else { 
     $('#sub').attr('disabled', 'disabled'); 
    } 
}); 

Aquí está la demostración: http://jsfiddle.net/LUnN5/

+0

+1 (cada 11 horas cuando mi voto tapa es de reset) para conseguir ' : verificado' antes de pensarlo. – alex

+0

En lugar de escanear el DOM nuevamente y crear más objetos jQuery, usando '$ ('. Check: checked'). Length' puede simplemente probar' this.checked'. – Jason

+0

@Jason Debes escanear el DOM porque la pregunta pregunta si están marcadas "cualquier" marca. Entonces, incluso si el que se hizo clic está desmarcado, puede haber otros que estén marcados. – JohnP

1

Obtenga una referencia a todas las casillas de verificación en cuestión, y luego en el evento change(), establezca la propiedad disabled en función de si alguna de las casillas de verificación está marcada o no.

var checks = $(':checkbox.check'); 
checks.change(function() { 
    $('#bla').attr('disabled', ! checks.filter(':checked').length); 
}); 

jsFiddle.

1
$(".check").change(function() { 

    var btn = $("#bla"); 

    if ($(".check").is(":checked")) { 

     btn.removeAttr("disabled"); 

    } else { 

     btn.attr("disabled", "disabled"); 

    } 

}); 

$(".check").triggerHandler("change"); 
Cuestiones relacionadas