2016-04-26 5 views
0

Ich habe ein checkbox und 3 radio buttons, ich versuche eine der radio buttons ausgewählt zu haben, wenn das Kontrollkästchen aktiviert ist und haben einen von ihnen unver ausgewählt, wenn die checkbox nicht aktiviert ist.Checkbox steuern Radiobuttons

Meine Lösung funktioniert beim ersten Lauf, wählt aber nach dem ersten Klick nicht das Optionsfeld aus.

$('#checkbox-h-2g').click(function() { 
    if ($('#checkbox-h-2g').is(":checked")) { 
     $('#r1').attr('checked', true); 
    }if (!$('#checkbox-h-2g').is(":checked")) { 
     $('#r1 , #r2, #r3').attr('checked', false); 
    } 
}); 
+0

In Ihrem zweiten 'verbessert werden if' Sie jeweils eine Schleife durch jeden Funk verwenden sollen und machen es un-geprüft . Gleiches sollte für checked Variante gehen. – skywalker

Antwort

1

Verwenden .prop() statt .attr() Eigenschaften zu setzen, auch Ihr Code kann als

$('#checkbox-h-2g').change(function() { 
    if (this.checked) { 
     $('#r1').prop('checked', true); 
    }else{ 
     $('#r1 , #r2, #r3').prop('checked', false); 
    } 
}); 
+1

Auch besser, Änderungsereignis zu verwenden, da Sie die Checkbox mit der Tastatur überprüfen können. – jcubic

+0

Sie können normalerweise auch die Tastatur verwenden, um auf (Leertaste) zu klicken, das Änderungsereignis wird nur bei Unschärfe ausgelöst. – mplungjan

+0

@jcubic, Viele Browser rufen 'click'-Handler auf, wenn der Status von' check-box' geändert wird. [Ref] (https: //www.w3.org/TR/WCAG20-TECHS/SCR35) – Rayon