Search code examples
htmllabelwebstorm

Why should HTML elements (input, textarea, and select) have associated labels?


Can anyone please shed light on why (input, textarea, and select) should have an associated label?

I found a stackoverflow thread (Should I put input elements inside a label element?) that explains all the ways of associating <input> and <label>, but I didn't find any clear explanations of WHY a label must be associated.

Example

WebStorm (IDE) generates a "Missing associated label" warning for the input in this code:

<div>
  <input type="text" id="search" name="search">
  <button id="logout" name="logout">Logout</button>
</div>

Applying auto-correction adds a label for the input:

<div>
  <label>
    <input type="text" id="search" name="search">
  </label>
  <button id="logout" name="logout">Logout</button>
</div>

The HTML works fine without the label, so why should I add it?


Solution

  • Associated labels are meant for Acessibility. So when you run, for example, a lightouse Chrome check on a website it will point out missing labels in the "Acessibility" part of its report. Reason:

    "Labels ensure that form controls are announced properly by assistive technologies, like screen readers".

    So It is good to have them when you have a website that could be acessed by someone with a disability who cant properly read or see the content himself and needs a screen reader.