[buddypress-trac] [BuddyPress Trac] #7348: Accessibility: Group related form elements within fieldsets in Profile > Edit screen

buddypress-trac noreply at wordpress.org
Thu Nov 17 20:59:10 UTC 2016

#7348: Accessibility: Group related form elements within fieldsets in Profile >
Edit screen
 Reporter:  mercime           |       Owner:
     Type:  enhancement       |      Status:  new
 Priority:  normal            |   Milestone:  Awaiting Review
Component:  Extended Profile  |     Version:
 Severity:  normal            |  Resolution:
 Keywords:                    |

Comment (by mercime):

 @dcavins :) Thanks for your question and sorry for the delay. I thought it
 better to show you what I meant with the images below.

 We will have a profile visibility fieldset within each existing and new
 fieldset. It would have been ideal if we didn't have nested fieldsets
 because of the extra noise in some assistive technologies (AT). However,
 the impact here for some AT's at most is that the legend of the main
 fieldset will be repeated along with the legend of the profile visibility
 for the radio buttons. In other ATs, the legend of the main fieldset is
 not repeated at all.


 As you might have noted in the image above, the field's description has
 been moved above the profile visibility section. This is because the
 description, if any, will be bound to the input field by adding an `id`
 attribute and value to the `<p>` description so that the new `aria-
 describedby` attribute of the text input field with value pointing to the
 new `id` of the `<p>` description and ATs will hear/learn how that field
 is described.

 Then, since the label of that text input field (all fields except
 checkboxes, radio buttons, and date fields) is now the legend for the
 fieldset, we could add an `id` attribute to the legend then add `aria-
 labelledby` attribute to the text input field which points to the `id` of
 the legend. Note that I have only checked this with one screen reader and
 passed as I was making this. Need to double-check how this works with
 other ATs as like the browsers, they have different behaviors for ARIA
 attributes and nested fieldsets. I'm open to other suggestions though.


 <div class="editfield field_67 field_text-field optional-field visibility-
 public field_type_textbox">
                 <legend id="legend-67">Text Field</legend> <!-- Add ID to
 legend -->
                 <input id="field-67" name="field-67" type="text" aria-
 labelledby="legend-67" aria-describedby="description-67"> <!-- Add aria-
 labelledby and aria-describedby attributes -->
                 <p id="description-67" class="description">Description of
 this text field.</p>

                 <p class="field-visibility-settings-toggle" id="field-
 visibility-settings-toggle-67" tabindex="0"> <!-- add tabindex so that
 this section is included in tab order and read whether they can change
 visibility of the field or not when in "forms" mode -->
                         This field can be seen by: <span class="current-
                         <button type="button" class="visibility-toggle-
 link">Change</a> <!-- Change empty link <a href="#">...</a> to <button> in
 another ticket -->

                 <div class="field-visibility-settings" id="field-
                                 <legend>Who can see this field?</legend>
                                 <ul class="radio"> <!-- Checking: do we
 really need the UL and LIs here? -->
                                         <li class="public">
                                                 <label for="see-
 type="radio" id="see-field_67_public" name="field_67_visibility"
 value="public" checked="checked">
                                                         <span class
                                         <li class="adminsonly">
                                                 <label for="see-
 type="radio" id="see-field_67_adminsonly" name="field_67_visibility"
                                                         <span class
 ="field-visibility-text">Only Me</span>
                                         <li class="loggedin">
                                                 <label for="see-
 type="radio" id="see-field_67_loggedin" name="field_67_visibility"
                                                         <span class
 ="field-visibility-text">All Members</span>
                                         <li class="friends">
                                                 <label for="see-
 type="radio" id="see-field_67_friends" name="field_67_visibility"
                                                         <span class
 ="field-visibility-text">My Friends</span>
                         <button type="button" class="field-visibility-
 settings-close" aria-label="Close to save selection">Close</button> <!--
 add aria-label to explain what closing the button will do ---- Change
 empty link <a href="#">...</a> to <button> in another ticket -->

 Image below shows the prototype I designed so that you can see the
 fieldsets around each profile field.


Ticket URL: <https://buddypress.trac.wordpress.org/ticket/7348#comment:2>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac

More information about the buddypress-trac mailing list