Accessibility is the concept of making the world as usable as possible for people of differing abilities. You see examples of accessibility every day: wheelchair access ramps on stairs, or braille on elevator buttons. While it is not yet legally required in most counties for websites, the principles of accessibility are strongly advised as best practices. Used well, accessibility makes your site easier to use for everyone.

The fact that we have been using clear, semantic HTML fulfills a big part of the guidelines of accessibility. In the context of forms, there are two other attributes we should add to our <label> tag:

The first is the for attribute. Used correctly, for links a label to the appropriate form element, meaning that a user can click on the for to make the appropriate <input> active, rather than having to guide the mouse and click (useful for site users with diminished hand-eye co-ordination, for example).

for takes the value of whatever id is set to in the appropriate form element:

<label for=city>City</label>

<input type="text" name="city" id="city">

Alternatively, you can wrap the input with the label; if you do so, you can drop the for attribute:

<label for=city>City

<input type="text" name="city" id="city">

</label>

The second attribute is accesskey. This creates a keyboard shortcut so that users with disabled access can hit a key, rather than using the mouse. It is usually (but not always) the first letter in the label content, and must be unique to each element in a form: