1
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-02-23 18:40:03 +00:00

Add explicit aria-label to placeholder-only inputs

While `placeholder` is nominally valid per spec
http://rawgit.com/w3c/html-api-map/master/index.html#accessible-name-and-description-calculation
it is inelegant, a fallback, and not supported in ios/safari/voiceover
and android/chrome/talkback, to name a few combinations

`aria-describedby` is also not really the right tool for providing a
name/label equivalent, so remove that from the list of possible
alternative methods / clarify how it can be used
This commit is contained in:
Patrick H. Lauke 2017-04-09 22:08:36 +01:00 committed by GitHub
commit 0af28c26ec
12 changed files with 30 additions and 30 deletions

View File

@ -59,7 +59,7 @@ Feel free to mix input groups with button groups in your toolbars. Similar to th
</div> </div>
<div class="input-group"> <div class="input-group">
<span class="input-group-addon" id="btnGroupAddon">@</span> <span class="input-group-addon" id="btnGroupAddon">@</span>
<input type="text" class="form-control" placeholder="Input group example" aria-describedby="btnGroupAddon"> <input type="text" class="form-control" placeholder="Input group example" aria-label="Input group example" aria-describedby="btnGroupAddon">
</div> </div>
</div> </div>
@ -72,7 +72,7 @@ Feel free to mix input groups with button groups in your toolbars. Similar to th
</div> </div>
<div class="input-group"> <div class="input-group">
<span class="input-group-addon" id="btnGroupAddon2">@</span> <span class="input-group-addon" id="btnGroupAddon2">@</span>
<input type="text" class="form-control" placeholder="Input group example" aria-describedby="btnGroupAddon2"> <input type="text" class="form-control" placeholder="Input group example" aria-label="Input group example" aria-describedby="btnGroupAddon2">
</div> </div>
</div> </div>
{% endexample %} {% endexample %}

View File

@ -19,11 +19,11 @@ Place one add-on or button on either side of an input. You may also place one on
{% example html %} {% example html %}
<div class="input-group"> <div class="input-group">
<span class="input-group-addon" id="basic-addon1">@</span> <span class="input-group-addon" id="basic-addon1">@</span>
<input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1"> <input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
</div> </div>
<br> <br>
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control" placeholder="Recipient's username" aria-describedby="basic-addon2"> <input type="text" class="form-control" placeholder="Recipient's username" aria-label="Recipient's username" aria-describedby="basic-addon2">
<span class="input-group-addon" id="basic-addon2">@example.com</span> <span class="input-group-addon" id="basic-addon2">@example.com</span>
</div> </div>
<br> <br>
@ -53,12 +53,12 @@ Add the relative form sizing classes to the `.input-group` itself and contents w
{% example html %} {% example html %}
<div class="input-group input-group-lg"> <div class="input-group input-group-lg">
<span class="input-group-addon" id="sizing-addon1">@</span> <span class="input-group-addon" id="sizing-addon1">@</span>
<input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon1"> <input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="sizing-addon1">
</div> </div>
<br> <br>
<div class="input-group"> <div class="input-group">
<span class="input-group-addon" id="sizing-addon2">@</span> <span class="input-group-addon" id="sizing-addon2">@</span>
<input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon2"> <input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="sizing-addon2">
</div> </div>
{% endexample %} {% endexample %}
@ -124,12 +124,12 @@ Buttons in input groups must wrapped in a `.input-group-btn` for proper alignmen
<span class="input-group-btn"> <span class="input-group-btn">
<button class="btn btn-secondary" type="button">Go!</button> <button class="btn btn-secondary" type="button">Go!</button>
</span> </span>
<input type="text" class="form-control" placeholder="Search for..."> <input type="text" class="form-control" placeholder="Search for..." aria-label="Search for...">
</div> </div>
</div> </div>
<div class="col-lg-6"> <div class="col-lg-6">
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control" placeholder="Search for..."> <input type="text" class="form-control" placeholder="Search for..." aria-label="Search for...>
<span class="input-group-btn"> <span class="input-group-btn">
<button class="btn btn-secondary" type="button">Go!</button> <button class="btn btn-secondary" type="button">Go!</button>
</span> </span>
@ -143,7 +143,7 @@ Buttons in input groups must wrapped in a `.input-group-btn` for proper alignmen
<span class="input-group-btn"> <span class="input-group-btn">
<button class="btn btn-secondary" type="button">Hate it</button> <button class="btn btn-secondary" type="button">Hate it</button>
</span> </span>
<input type="text" class="form-control" placeholder="Product name"> <input type="text" class="form-control" placeholder="Product name" aria-label="Product name">
<span class="input-group-btn"> <span class="input-group-btn">
<button class="btn btn-secondary" type="button">Love it</button> <button class="btn btn-secondary" type="button">Love it</button>
</span> </span>
@ -240,4 +240,4 @@ Buttons in input groups must wrapped in a `.input-group-btn` for proper alignmen
Screen readers will have trouble with your forms if you don't include a label for every input. For these input groups, ensure that any additional label or functionality is conveyed to assistive technologies. Screen readers will have trouble with your forms if you don't include a label for every input. For these input groups, ensure that any additional label or functionality is conveyed to assistive technologies.
The exact technique to be used (`<label>` elements hidden using the `.sr-only` class, or use of the `aria-label`, `aria-labelledby`, `aria-describedby`, `title` or `placeholder` attribute) and what additional information will need to be conveyed will vary depending on the exact type of interface widget you're implementing. The examples in this section provide a few suggested, case-specific approaches. The exact technique to be used (`<label>` elements hidden using the `.sr-only` class, or use of the `aria-label` and `aria-labelledby` attributes, possibly in combination with `aria-describedby`) and what additional information will need to be conveyed will vary depending on the exact type of interface widget you're implementing. The examples in this section provide a few suggested, case-specific approaches.

View File

@ -57,7 +57,7 @@ Here's an example of all the sub-components included in a responsive light-theme
</li> </li>
</ul> </ul>
<form class="form-inline my-2 my-lg-0"> <form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>
@ -192,7 +192,7 @@ Place various form controls and components within a navbar with `.form-inline`.
{% example html %} {% example html %}
<nav class="navbar navbar-light bg-faded"> <nav class="navbar navbar-light bg-faded">
<form class="form-inline"> <form class="form-inline">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</nav> </nav>
@ -204,7 +204,7 @@ Align the contents of your inline forms with utilities as needed.
<nav class="navbar navbar-light bg-faded justify-content-between"> <nav class="navbar navbar-light bg-faded justify-content-between">
<a class="navbar-brand">Navbar</a> <a class="navbar-brand">Navbar</a>
<form class="form-inline"> <form class="form-inline">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</nav> </nav>
@ -217,7 +217,7 @@ Input groups work, too:
<form class="form-inline"> <form class="form-inline">
<div class="input-group"> <div class="input-group">
<span class="input-group-addon" id="basic-addon1">@</span> <span class="input-group-addon" id="basic-addon1">@</span>
<input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1"> <input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
</div> </div>
</form> </form>
</nav> </nav>
@ -300,7 +300,7 @@ Theming the navbar has never been easier thanks to the combination of theming cl
</li> </li>
</ul> </ul>
<form class="form-inline"> <form class="form-inline">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-info my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-info my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>
@ -328,7 +328,7 @@ Theming the navbar has never been easier thanks to the combination of theming cl
</li> </li>
</ul> </ul>
<form class="form-inline"> <form class="form-inline">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-secondary my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-secondary my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>
@ -356,7 +356,7 @@ Theming the navbar has never been easier thanks to the combination of theming cl
</li> </li>
</ul> </ul>
<form class="form-inline"> <form class="form-inline">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-primary my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-primary my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>
@ -458,7 +458,7 @@ With no `.navbar-brand` shown in lowest breakpoint:
</li> </li>
</ul> </ul>
<form class="form-inline my-2 my-lg-0"> <form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>
@ -516,7 +516,7 @@ With a toggler on the left and brand name on the right:
</li> </li>
</ul> </ul>
<form class="form-inline my-2 my-lg-0"> <form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>

View File

@ -35,7 +35,7 @@
</li> </li>
</ul> </ul>
<form class="form-inline mt-2 mt-md-0"> <form class="form-inline mt-2 mt-md-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>

View File

@ -39,7 +39,7 @@
</li> </li>
</ul> </ul>
<form class="form-inline mt-2 mt-md-0"> <form class="form-inline mt-2 mt-md-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>

View File

@ -45,7 +45,7 @@
</li> </li>
</ul> </ul>
<form class="form-inline my-2 my-lg-0"> <form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>

View File

@ -36,7 +36,7 @@
</li> </li>
</ul> </ul>
<form class="form-inline mt-2 mt-md-0"> <form class="form-inline mt-2 mt-md-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>

View File

@ -36,7 +36,7 @@
</li> </li>
</ul> </ul>
<form class="form-inline mt-2 mt-md-0"> <form class="form-inline mt-2 mt-md-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>

View File

@ -45,7 +45,7 @@
</li> </li>
</ul> </ul>
<form class="form-inline my-2 my-md-0"> <form class="form-inline my-2 my-md-0">
<input class="form-control" type="text" placeholder="Search"> <input class="form-control" type="text" placeholder="Search" aria-label="Search">
</form> </form>
</div> </div>
</nav> </nav>
@ -238,7 +238,7 @@
</li> </li>
</ul> </ul>
<form class="form-inline my-2 my-md-0"> <form class="form-inline my-2 my-md-0">
<input class="form-control" type="text" placeholder="Search"> <input class="form-control" type="text" placeholder="Search" aria-label="Search">
</form> </form>
</div> </div>
</div> </div>
@ -300,7 +300,7 @@
</li> </li>
</ul> </ul>
<form class="form-inline my-2 my-md-0"> <form class="form-inline my-2 my-md-0">
<input class="form-control" type="text" placeholder="Search"> <input class="form-control" type="text" placeholder="Search" aria-label="Search">
</form> </form>
</div> </div>
</nav> </nav>

View File

@ -45,7 +45,7 @@
</li> </li>
</ul> </ul>
<form class="form-inline my-2 my-lg-0"> <form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>

View File

@ -45,7 +45,7 @@
</li> </li>
</ul> </ul>
<form class="form-inline my-2 my-lg-0"> <form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>

View File

@ -37,7 +37,7 @@
</li> </li>
</ul> </ul>
<form class="form-inline mt-2 mt-md-0"> <form class="form-inline mt-2 mt-md-0">
<input class="form-control mr-sm-2" type="text" placeholder="Search"> <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form> </form>
</div> </div>