Skip to content
This repository has been archived by the owner on Sep 5, 2024. It is now read-only.

Toggling radio buttons makes all of them appear checked to JAWS #9400

Closed
jelbourn opened this issue Aug 24, 2016 · 11 comments
Closed

Toggling radio buttons makes all of them appear checked to JAWS #9400

jelbourn opened this issue Aug 24, 2016 · 11 comments
Assignees
Labels
a11y This issue is related to accessibility g3: reported The issue was reported by an internal or external product team. has: Pull Request A PR has been created to address this issue P0: critical Critical issues that must be addressed immediately. P1: urgent Urgent issues that should be addressed in the next minor or patch release.
Milestone

Comments

@jelbourn
Copy link
Member

jelbourn commented Aug 24, 2016

Have a report that, with an <md-radio-group>, all of the options are appearing checked at the same time with JAWS. We should investigate with IE11, Edge, Chrome, and Firefox.

The radio button template looks something like

<md-radio-group ng-model="ctrl.element" class="element-options"
                ng-change="ctrl.updateChoice()">
  <md-radio-button ng-value="'EARTH'" class="md-primary">
    Running on the earth
  </md-radio-button>
  <md-radio-button ng-value="'WIND'" class="md-primary">
    Dancing in the wind
  </md-radio-button>
  <md-radio-button ng-value="'WATER'" class="md-primary">
    Swimming in the water
  </md-radio-button>
</md-radio-group>
@jelbourn jelbourn added a11y This issue is related to accessibility g3: reported The issue was reported by an internal or external product team. P1: urgent Urgent issues that should be addressed in the next minor or patch release. labels Aug 24, 2016
@ThomasBurleson
Copy link
Contributor

_Welcome to a11y @bradrich.

@ThomasBurleson ThomasBurleson added this to the 1.1.2 milestone Aug 24, 2016
@jelbourn
Copy link
Member Author

AFAICT on the demo site, aria-checked is being updated correctly, so this is likely something more subtle.

@bradrich
Copy link
Contributor

I will take a look at this asap.

@ThomasBurleson
Copy link
Contributor

ThomasBurleson commented Aug 25, 2016

@bradrich - this will be merged in 1.1.2... so we have time.

@jelbourn
Copy link
Member Author

@bradrich have you been able to reproduce?

@bradrich
Copy link
Contributor

@jelbourn I plan on tackling this today. It is my #1 priority item.

@bradrich
Copy link
Contributor

Running through a series of tests prove that there is indeed something wrong with our radio button system when accessed by a screen reader. Here is what I found:

Mac OS 10.11.6

  • ChromeVox (installed from Chrome App Store) - Chrome (latest) - "Apple, radio button, checked, one of three"
  • Apple Voice Over (default Mac screen reader) - Chrome (latest) - "Apple, selected, one of three"
  • Apple Voice Over - Firefox (latest) - "Apple, radio button, selected, one of three"
  • Apple Voice Over - Safari (latest) - "Apple, radio button, selected, one of three"

Windows 10 64 bit

  • Narrator (default Windows 10 screen reader) - Chrome (latest) - "Group"
    • Clicking on a radio button doesn't provide any spoken messages.
    • This is not what is expected. Accessing this page: http://webaim.org/techniques/forms/controls, when you click on a radio button you get this message: "Selected, Overnight, radio button, one of three".
  • Narrator - Edge (latest) - Same as Chrome
  • Narrator - Internet Explorer 11 - Same as Edge

The biggest difference between our radio button structure and that of the other test website is that our radio buttons are built with one HTML element: <md-radio-button value="Apple" class="md-primary">Apple</md-radio-button>. Their radio buttons are built using the standard HTML approach of:

<input id="overnight" type="radio" name="shipping" value="overnight">
<label for="overnight">Overnight</label><br>

I am investigating ways to correct this problem. Any suggestions would be appreciated.

@ThomasBurleson
Copy link
Contributor

@crisbeto - can you pair with Brad here?

@crisbeto crisbeto self-assigned this Aug 31, 2016
@crisbeto
Copy link
Member

I couldn't reproduce it with JAWS 17.0 on Windows @jelbourn. It properly read out everything as not checked and if I provided a pre-filled checked value it also worked.

@ThomasBurleson ThomasBurleson added the P0: critical Critical issues that must be addressed immediately. label Oct 5, 2016
@crisbeto crisbeto added the in progress Mainly for in progress PRs, but may be used for issues that require multiple PRs label Oct 6, 2016
@crisbeto
Copy link
Member

crisbeto commented Oct 9, 2016

I managed to track this one down. It's because of ngAria which overwrites the aria-checked on load, when using ng-value. The demos on the site work because they use the native value attribute. I'll push a fix.

crisbeto added a commit to crisbeto/material that referenced this issue Oct 9, 2016
…value

* Fixes all of the radio buttons within a radio group having `aria-checked` set to true on load, when using `ng-value`.
* Cleans up the `radioButton` directive.

Fixes angular#9400.
@crisbeto crisbeto added has: Pull Request A PR has been created to address this issue and removed in progress Mainly for in progress PRs, but may be used for issues that require multiple PRs labels Oct 9, 2016
@jelbourn
Copy link
Member Author

Seems like ngAria always ends up doing the wrong thing when you're already mindful of a11y... Nice debugging.

crisbeto added a commit to crisbeto/material that referenced this issue Oct 22, 2016
…value

* Fixes all of the radio buttons within a radio group having `aria-checked` set to true on load, when using `ng-value`.
* Cleans up the `radioButton` directive.

Fixes angular#9400.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
a11y This issue is related to accessibility g3: reported The issue was reported by an internal or external product team. has: Pull Request A PR has been created to address this issue P0: critical Critical issues that must be addressed immediately. P1: urgent Urgent issues that should be addressed in the next minor or patch release.
Projects
None yet
Development

No branches or pull requests

4 participants