]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Callout for labelling of input groups
authorPatrick H. Lauke <redux@splintered.co.uk>
Mon, 8 Dec 2014 14:03:04 +0000 (14:03 +0000)
committerPatrick H. Lauke <redux@splintered.co.uk>
Mon, 8 Dec 2014 22:29:33 +0000 (22:29 +0000)
plus a few suggested approaches (in some cases, elided, as the actual
content of the label - being a generic example - is not important)

docs/_includes/components/input-groups.html

index 8a07735d2b19db6fead09c825d83f027d198d59f..ba14573ba2a295a9381b6ceafbe2dd2b5674b2ad 100644 (file)
     <h4>Don't mix with other components</h4>
     <p>Do not mix form groups or grid column classes directly with input groups. Instead, nest the input group inside of the form group or grid-related element.</p>
   </div>
-
+  <div class="bs-callout bs-callout-warning" id="callout-inputgroup-form-labels">
+    <h4>Always add labels</h4>
+    <p>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.</p>
+    <p>The exact technique to be used (<code>&lt;label&gt;</code> elements hidden using the <code>.sr-only</code> class, or use of the <code>aria-label</code>, <code>aria-labelledby</code>, <code>aria-describedby</code>, <code>title</code> or <code>placeholder</code> 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.</p>
+  </div>
 
   <h2 id="input-groups-basic">Basic example</h2>
   <p>Place one add-on or button on either side of an input. You may also place one on both sides of an input.</p>
   <p><strong class="text-danger">We do not support multiple form-controls in a single input group.</strong></p>
   <form class="bs-example bs-example-form" data-example-id="simple-input-groups">
     <div class="input-group">
-      <span class="input-group-addon">@</span>
-      <input type="text" class="form-control" placeholder="Username">
+      <span class="input-group-addon" id="basic-addon1">@</span>
+      <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
     </div>
     <br>
     <div class="input-group">
-      <input type="text" class="form-control">
-      <span class="input-group-addon">.00</span>
+      <input type="text" class="form-control" placeholder="Recipient's username" aria-describedby="basic-addon2">
+      <span class="input-group-addon" id="basic-addon2">@example.com</span>
     </div>
     <br>
     <div class="input-group">
       <span class="input-group-addon">$</span>
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" aria-label="Amount (to the nearest dollar)">
       <span class="input-group-addon">.00</span>
     </div>
   </form>
 {% highlight html %}
 <div class="input-group">
-  <span class="input-group-addon">@</span>
-  <input type="text" class="form-control" placeholder="Username">
+  <span class="input-group-addon" id="basic-addon1">@</span>
+  <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
 </div>
 
 <div class="input-group">
-  <input type="text" class="form-control">
-  <span class="input-group-addon">.00</span>
+  <input type="text" class="form-control" placeholder="Recipient's username" aria-describedby="basic-addon2">
+  <span class="input-group-addon" id="basic-addon2">@example.com</span>
 </div>
 
 <div class="input-group">
   <span class="input-group-addon">$</span>
-  <input type="text" class="form-control">
+  <input type="text" class="form-control" aria-label="Amount (to the nearest dollar)">
   <span class="input-group-addon">.00</span>
 </div>
 {% endhighlight %}
   <p>Add the relative form sizing classes to the <code>.input-group</code> itself and contents within will automatically resize—no need for repeating the form control size classes on each element.</p>
   <form class="bs-example bs-example-form" data-example-id="input-group-sizing">
     <div class="input-group input-group-lg">
-      <span class="input-group-addon">@</span>
-      <input type="text" class="form-control" placeholder="Username">
+      <span class="input-group-addon" id="sizing-addon1">@</span>
+      <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon1">
     </div>
     <br>
     <div class="input-group">
-      <span class="input-group-addon">@</span>
-      <input type="text" class="form-control" placeholder="Username">
+      <span class="input-group-addon" id="sizing-addon2">@</span>
+      <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon2">
     </div>
     <br>
     <div class="input-group input-group-sm">
-      <span class="input-group-addon">@</span>
-      <input type="text" class="form-control" placeholder="Username">
+      <span class="input-group-addon" id="sizing-addon3">@</span>
+      <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon3">
     </div>
   </form>
 {% highlight html %}
 <div class="input-group input-group-lg">
-  <span class="input-group-addon">@</span>
-  <input type="text" class="form-control" placeholder="Username">
+  <span class="input-group-addon" id="sizing-addon1">@</span>
+  <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon1">
 </div>
 
 <div class="input-group">
-  <span class="input-group-addon">@</span>
-  <input type="text" class="form-control" placeholder="Username">
+  <span class="input-group-addon" id="sizing-addon2">@</span>
+  <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon2">
 </div>
 
 <div class="input-group input-group-sm">
-  <span class="input-group-addon">@</span>
-  <input type="text" class="form-control" placeholder="Username">
+  <span class="input-group-addon" id="sizing-addon3">@</span>
+  <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon3">
 </div>
 {% endhighlight %}
 
       <div class="col-lg-6">
         <div class="input-group">
           <span class="input-group-addon">
-            <input type="checkbox">
+            <input type="checkbox" aria-label="Checkbox for following text input">
           </span>
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" aria-label="Text input with checkbox">
         </div><!-- /input-group -->
       </div><!-- /.col-lg-6 -->
       <div class="col-lg-6">
         <div class="input-group">
           <span class="input-group-addon">
-            <input type="radio">
+            <input type="radio" aria-label="Radio button for following text input">
           </span>
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" aria-label="Text input with radio button">
         </div><!-- /input-group -->
       </div><!-- /.col-lg-6 -->
     </div><!-- /.row -->
   <div class="col-lg-6">
     <div class="input-group">
       <span class="input-group-addon">
-        <input type="checkbox">
+        <input type="checkbox" aria-label="...">
       </span>
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" aria-label="...">
     </div><!-- /input-group -->
   </div><!-- /.col-lg-6 -->
   <div class="col-lg-6">
     <div class="input-group">
       <span class="input-group-addon">
-        <input type="radio">
+        <input type="radio" aria-label="...">
       </span>
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" aria-label="...">
     </div><!-- /input-group -->
   </div><!-- /.col-lg-6 -->
 </div><!-- /.row -->
           <span class="input-group-btn">
             <button class="btn btn-default" type="button">Go!</button>
           </span>
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" placeholder="Search for...">
         </div><!-- /input-group -->
       </div><!-- /.col-lg-6 -->
       <div class="col-lg-6">
         <div class="input-group">
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" placeholder="Search for...">
           <span class="input-group-btn">
             <button class="btn btn-default" type="button">Go!</button>
           </span>
       <span class="input-group-btn">
         <button class="btn btn-default" type="button">Go!</button>
       </span>
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" placeholder="Search for...">
     </div><!-- /input-group -->
   </div><!-- /.col-lg-6 -->
   <div class="col-lg-6">
     <div class="input-group">
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" placeholder="Search for...">
       <span class="input-group-btn">
         <button class="btn btn-default" type="button">Go!</button>
       </span>
               <li><a href="#">Separated link</a></li>
             </ul>
           </div><!-- /btn-group -->
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" aria-label="Text input with dropdown button">
         </div><!-- /input-group -->
       </div><!-- /.col-lg-6 -->
       <div class="col-lg-6">
         <div class="input-group">
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" aria-label="Text input with dropdown button">
           <div class="input-group-btn">
             <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Action <span class="caret"></span></button>
             <ul class="dropdown-menu dropdown-menu-right" role="menu">
           <li><a href="#">Separated link</a></li>
         </ul>
       </div><!-- /btn-group -->
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" aria-label="...">
     </div><!-- /input-group -->
   </div><!-- /.col-lg-6 -->
   <div class="col-lg-6">
     <div class="input-group">
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" aria-label="...">
       <div class="input-group-btn">
         <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Action <span class="caret"></span></button>
         <ul class="dropdown-menu dropdown-menu-right" role="menu">
               <li><a href="#">Separated link</a></li>
             </ul>
           </div>
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" aria-label="Text input with segmented button dropdown">
         </div><!-- /.input-group -->
       </div><!-- /.col-lg-6 -->
       <div class="col-lg-6">
         <div class="input-group">
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" aria-label="Text input with segmented button dropdown">
           <div class="input-group-btn">
             <button type="button" class="btn btn-default" tabindex="-1">Action</button>
             <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
   <div class="input-group-btn">
     <!-- Button and dropdown menu -->
   </div>
-  <input type="text" class="form-control">
+  <input type="text" class="form-control" aria-label="...">
 </div>
 
 <div class="input-group">
-  <input type="text" class="form-control">
+  <input type="text" class="form-control" aria-label="...">
   <div class="input-group-btn">
     <!-- Button and dropdown menu -->
   </div>