2009-08-21 3 views

Antwort

4

Das Problem mit Kontrollkästchen ist, sie vor allem, da die bei allen Arten von nicht hilfreich Zeiten change Ereignis ausgelöst werden direkt in IE6, zu arbeiten.

Beginnen wir mit der Funktion starten die Sperrung zu tun:

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

Beachten Sie, dass ich hier nur select zu benutzen, die mit ziemlicher Sicherheit breiter ist, als Sie wollen würde, aber select.some-class-to-identify-the-hours-and-minutes-and-seconds-dropdowns würde genauso gut funktionieren.

Beachten Sie auch, dass die Funktion selbst herausfindet, ob die Box aktiviert ist, was sie zu einem Idempotenten macht: Es ist sicher, während der Überprüfung einer Box wiederholt anzurufen.

Jetzt brauchen wir nur, um diese Funktion ein paar verschiedenen Ereignisse zu binden:

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

würde ich das alles drinnen (Dokument) .ready ?? – leora

+0

@oo - Sie müssen mindestens den Bind-Code in das (Dokument) .ready setzen, Sie können die onCheckChange-Funktion darin einfügen, aber das ist nicht notwendig. – karim79

+0

Was ist das Label zweite Zeile an der Unterseite für? – leora

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

Versuchen Sie dies.

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

Ich glaube nicht, Onchange auf Kontrollkästchen verwendet werden können. Zumindest funktionierte das nicht, als ich es getestet habe. Oder wenn es verwendet werden kann, weiß ich nicht, dass es hier funktionieren würde, da sich der "Wert" der Checkbox technisch nicht ändert. –

+0

Die neue Bearbeitung, die ich gemacht habe, funktioniert tatsächlich. – ChaosPandion

+0

Interessant. Wusste nicht, dass Sie onchange nur in einer Auswahlbox verwenden können. Aber ich denke, das ist vernünftig, wenn man bedenkt, dass die jQuery-Dokumente sagen, dass es ein Wert ist, wenn ein Steuerelement den Wert ändert. In diesem Fall noch ein wenig verwirrend. Außerdem ist Ihr Code nur in einer Richtung. Was passiert, wenn der Benutzer #checkbox abwählt? –