Chrome Version: 63.0.3207.0 (Official Build) canary (64-bit)
OS: Windows 10 Version 1703 (OS Build 16251.0) 64-bit
What steps will reproduce the problem?
(1) Start Chrome and the NVDA screen reader.
(2) Open this URL:
data:text/html,before<input type="text" onInput="document.getElementById('button').disabled = false;"><button id="button" disabled>Go</button>
(3) Press control+home to move to the top of the document.
(4) Press tab once to focus the text input.
(5) Type "z".
(6) Press escape to switch to NVDA browse mode.
(7) Press b to move to the button.
What is the expected result?
NVDA should say "Go button"
What happens instead?
NVDA says "Go button unavailable"
When you type into the text input, the disabled property on the button is set to false. However, the accessibility tree still reports that the button has the unavailable state and a state change event is not fired. Both of these things need to be fixed.
Note that if you use aria-disabled, the change is reflected and signalled properly:
data:text/html,before<input type="text" onInput="var b = document.getElementById('button'); b.setAttribute('aria-disabled', 'false'); b.disabled = false;"><button id="button" disabled aria-disabled="true">Go</button>
Impact: This makes it difficult for NVDA users to work with complex forms where the submit button is disabled until text is entered. After entering text, it is not possible to activate the button using NVDA browse mode, since the accessible still reports as being unavailable. This is particularly frustrating, for example, when commenting on GitHub issues.
Comment 1 by leberly@chromium.org
, Sep 11 2017Chrome 63.0.3212.0 (Official Build) canary (64-bit) (cohort: 64-Bit) Windows 10 Enterprise Version 10.0.14393 Build 14393.1593 NVDA 2017.3 JAWS 2018 Beta Firefox 55.0.3 (64-bit) Hi Jamie, I am able to reproduce this issue in Chrome + NVDA only. Thanks for sending it in! (1) Open NVDA + Chrome (2) Open this URL: data:text/html,before<input type="text" onInput="document.getElementById('button').disabled = false;"><button id="button" disabled>Go</button> (3) Press control+home to move to the top of the document. (4) Press tab once to focus the text input. (5) Type "z". (6) Press escape to switch to NVDA browse mode. (7) Press b to move to the button. (8) Repeat with NVDA + Firefox (9) Repeat with JAWS + Chrome Results: Chrome + NVDA, can repro: "Go button unavailable" Firefox + NVDA, cannot repro" "Go button" Chrome + JAWS, cannot repro" "Go button"