Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

However, the asterisk character is typically not announced by screen readers.

Following are different techniques to use in order to notify screen reader users that form elements are required to complete.

...

Anchor
requiredforminputfield
requiredforminputfield
Required Form Input Field

...

Make the form element mandatory to complete by applying the “required” attribute to the input tag.

By default, when a form element has been marked as required and receive keyboard focus, the screen reader will announce the form element as “required invalid”.

The form element should be announced as invalid only after it has lost keyboard focus.

Add the “aria-invalid=”false” attribute to the default state to prevent screen readers from announcing the form element as invalid.

When the form input field has keyboard focus: 

  •  the screen reader should announce/notify the user that it is a required field

  • the screen reader should NOT announce that it is an invalid entry, the form element should be announced as invalid after it has lost keyboard focus

Markup

Code Block
<form novalidate>
<label for="fname">First Name:*</label>
<input id="fname" required>
</form>required aria-invalid="false">

View HTML Markup on Github

...

Anchor
requiredgroupofradiobuttons
requiredgroupofradiobuttons
Required Group of Radio Buttons

...

When the legend is announced by the screen reader: 

  •  it should notify the user that it is a required form element

Markup

Use the “aria-required” attribute in combination with the “radiogroup role” in the fieldset tag.

...

Add an invisible required label, within the legend tag.  that will be announced by the screen reader.

A sighted user will not see this text.

Code Block
<fieldset>
<legend>Select your shipping option:<<span class="required">required</span></legend>
<input id="overnight" type="radio" name="shipping" value="overnight">
<label for="overnight">Overnight</label><br>
<input id="twoday" type="radio" name="shipping" value="twoday">
<label for="twoday">Two day</label><br>
<input id="ground" type="radio" name="shipping" value="ground">
<label for="ground">Ground</label>
</fieldset>

CSS

Code Block
languagecss
.required { 
  display: none;
}

View HTML Markup on Github

...

Anchor
requiredgroupofcheckboxes
requiredgroupofcheckboxes
Required Group of Checkboxes

...

When it comes to making a group of checkboxes required you cannot use the same technique that’s used to make a group of radio buttons required.

The required attributes on the fieldset will not work and there is no equivalent checkboxgroup role.

Basically, what you can do here is to add Add an invisible required label, within the legend tag.  that will be announced by the screen reader.

A sighted user will not see this text.

When the legend is announced by the screen reader: 

  •  it should notify the user that it is a required form element

Markup

Code Block
<fieldset>
<legend>I enjoy the following activities:<span class="required">required</span></legend>
<input id="hiking" type="checkbox" name="toppings" value="hiking">
<label for="hiking">Hiking</label><br>
<input id="biking" type="checkbox" name="toppings" value="biking">
<label for="biking">Biking</label><br>
<input id="running" type="checkbox" name="toppings" value="running">
<label for="running">Running</label><br>
<input id="dancing" type="checkbox" name="toppings" value="dancing">
<label for="dancing">Dancing</label>
</fieldset>

...

Code Block
languagecss
.required { 
  display: none;
}

View HTML Markup on Github

...

Anchor
requiredsinglecheckbox
requiredsinglecheckbox
Required Single Checkbox

...

You can make standalone/single checkboxes mandatory to complete by applying the “required” attribute to the input tag.

By default, when a form element has been marked as required and receive keyboard focus, the screen reader will announce the form element as “required invalid”.

The form element should be announced as invalid only after it has lost keyboard focus.

Add the “aria-invalid=”false” attribute to the default state to prevent screen readers from announcing the form element as invalid.

When the checkbox has keyboard focus: 

  • the screen reader should announce/notify the user that it is a required field

  • the screen reader should NOT announce that it is an invalid entry, the form element should be announced as invalid after it has lost keyboard focus

Markup

Code Block
<form>
  <input id="agreement" type="checkbox" required aria-invalid="false">
 
<label for="agreement">All the information I have submitted in this application is true</label>
</form>

View HTML Markup on Github