2009-08-21 6 views

Répondre

4

Le problème avec les cases est principalement de les amener à travailler en plein IE6, puisque les change événement se déclenche à toutes sortes de temps inutiles.

Commençons par la fonction de faire la invalidantes:

function onCheckChange() { 
    if ($("#all-day-checkbox").is(':checked')) 
    $("select").attr('disabled', 'disabled'); 
    else 
    $("select").removeAttr('disabled'); 
} 

Notez que j'utilise ici juste select qui est certainement plus large que vous ne voulez, mais select.some-class-to-identify-the-hours-and-minutes-and-seconds-dropdowns fonctionnerait aussi bien.

Notez également que la fonction détermine elle-même si la case est cochée, ce qui la rend idempotente: il est possible d'appeler plusieurs fois pendant le processus de vérification d'une boîte.

Maintenant, nous avons juste besoin de lier cette fonction à quelques événements différents:

$("#all-day-checkbox").click(onCheckChange).change(onCheckChange); 
$("label[for=all-day-checkbox]").click(onCheckChange); 
+0

voudrais-je mettre tout cela à l'intérieur (document) .prêt ?? – leora

+0

@oo - vous devrez mettre au moins le code de liaison dans le (document) .ready, vous pouvez y mettre la fonction onCheckChange, mais ce n'est pas nécessaire. – karim79

+0

Quelle est la deuxième ligne de l'étiquette en bas? – leora

0
$('#allday').toggle(
    function(){ 
     $('#hour, #minutes, #am-pm').attr('disabled', 'disabled'); 
    }, 
    function(){ 
     $('#hour, #minutes, #am-pm').removeAttr('disabled'); 
    } 
); 
0

Essayez ceci.

$('#checkbox').change(function(){ 
    $('#Hour, #Minute, #Period').attr('disabled', this.checked);  
}); 
+0

Je ne pense pas que onchange peut être utilisé sur des cases à cocher. Au moins, cela n'a pas fonctionné quand je l'ai testé. Ou s'il peut être utilisé, je ne sais pas si cela fonctionnerait ici, puisque la "valeur" de la case à cocher ne change pas techniquement. –

+0

La nouvelle modification que j'ai faite fonctionne réellement. – ChaosPandion

+0

Intéressant. Je ne savais pas que vous pouviez utiliser onchange sur autre chose qu'une boîte de sélection. Mais je suppose que c'est raisonnable considérant que les docs de jQuery disent que c'est quand un contrôle change de valeur. Encore un peu confus dans ce cas. De plus, votre code n'est qu'à sens unique. Que faire si l'utilisateur désélectionne #checkbox? –