Skip to content

Replacing Label Fields with Aria-Label, A Focus on Accessibility

Updated: at 02:12 PM

Replacing Label Fields with Aria-Label: A Focus on Accessibility

Intro: The Good Ol’ Label Tag

In HTML forms, the label element serves as an intuitive way to link a label to an input field. By wrapping an input field with a label or by using the for attribute, you make sure that clicking on the label moves the focus to the corresponding input element. This seemingly simple feature is invaluable for accessibility, especially for those who use screen readers.

Sample Form with Label Fields

Let’s start with a sample form that uses the label element for three different types of fields: text, radio, and checkbox.

<form>
  <!-- Text Input -->
  <label for="username">Username</label>
  <input type="text" id="username" name="username">

  <!-- Radio Input -->
  <label for="subscribeYes">Subscribe to newsletter?</label>
  <input type="radio" id="subscribeYes" name="subscribe" value="yes">

  <!-- Checkbox Input -->
  <label for="terms">I agree to terms and conditions</label>
  <input type="checkbox" id="terms" name="terms">
</form>

Replacing Labels with Aria-Label

The aria-label attribute provides an alternative to the label element. It makes the form elements accessible without visually displaying a label on the screen. This can be handy when you want to maintain a streamlined UI without compromising accessibility.

Converting to Aria-Label

Let’s rework the previous example using aria-label.

<form>
  <!-- Text Input -->
  <input type="text" aria-label="Username" id="username" name="username">

  <!-- Radio Input -->
  <input type="radio" aria-label="Subscribe to newsletter?" id="subscribeYes" name="subscribe" value="yes">

  <!-- Checkbox Input -->
  <input type="checkbox" aria-label="I agree to terms and conditions" id="terms" name="terms">
</form>

Explaining the Conversions

  1. Text Input: We removed the label tag and added aria-label="Username" to the input field.
  2. Radio Input: Similarly, the label for the radio button was replaced with aria-label="Subscribe to newsletter?".
  3. Checkbox Input: The checkbox follows suit with an aria-label="I agree to terms and conditions".

Conclusion: Accessibility Made Simple but Significant

Both label and aria-label share the noble mission of enhancing web accessibility. However, when it comes to the form’s structural efficiency, aria-label takes the cake. To get down to the nitty-gritty, let’s look at the line count of uncommented code: The initial example with label fields consists of 9 lines of code, whereas the reworked example using aria-label comprises just 6 lines. That’s a noticeable reduction, making the latter a more streamlined option.

That said, the prominence of a label shouldn’t be undervalued. It not only fortifies accessibility but also elevates the user experience by creating a clickable area around the associated input field. In essence, aria-label serves as a versatile alternative—efficient yet accessible. Use it judiciously to create web forms that are not just user-friendly but also design-efficient.

Check out the ORM (Object Relational Mapper) PRISMA. The database access method I use in all my projects