Radio buttons
Radio buttons are also control elements. You can make multiple selections with a list of checkboxes, but with radio buttons you’ll eventually force the user to choose between this or that. Either way, radio buttons will also benefit from correct usage of the label. Here’s an example:
<label>
<input type="radio" name="colour" value="blue"> Blue
</label>
<label>
<input type="radio" name="colour" value="green"> Green
</label>
Let’s have a look at what VoiceOver, ChromeVox and Narrator will say:
VoiceOver
Blue, radio button, 1 of 2; Blue
Green, radio button, 2 of 2; Green
After clicking on a radio button (or the corresponding text/label):
Green, selected radio button, 2 of 2
And without the label:
radio button, 1 of 2
selected radio button, 2 of 2
Okay? What’s this radio button for?? I don't get it without the label.
ChromeVox
Blue, radio button unselected
Green, radio button selected
And without the label we get this after clicking on the text:
blue green
ChromeVox will collect all the text within the form and read it out loud. After clicking on a radio button it will say this:
selected
Narrator
Windows’ Narrator is a little bit more precise. The given structure will give us:
Selected, blue, radio button, selected, 1 of 1
Selected, green, radio button, selected, 1 of 1
In this case we have to do it the “old fashion way” and add the ID as well as the FOR:
<input name="colour" value="blue" id="choice1" type="radio">
<label for="choice1"> Blue</label>
<input name="colour" value="green" id="choice2" type="radio">
<label for="choice2"> Green</label>
Now we’ll get this read out loud by Narrator:
Selected, blue, radio button, selected, 1 of 2
Selected, green, radio button, selected, 2 of 2
Video example
This video shows the importance of proper markup. Use a label in your markup to please all screen readers - and your users.
As you can see, it’s very important to establish some kind of relationship between the control element and its label. Don’t just write the label - use proper markup instead, i.e. use the <label>
.