I have some HTML that I am trying to modify to get jaws to read correctly, I have stripped out all the bits that are not relevant to the issue.
When I tab onto a select I want it to read the H3 header the text in the div then the select, most of it is fine, but it stops reading the text about 2 thirds of the way though and jumps to the label. The words right here
is where it stops reading and then reads star mandatory ...
I am wondering if there is some buffer in jaws that gets full and then when it hits the end of it, it just moves on the next element.
Is there anything I can do about this or should I just move on?
The code gets generated so I have left the formatting as is.
setup is win7 jaws13 ie11
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
</head>
<body>
<div >
<div >
<div >
<form method="post" id="form" name="form" action="doNothing">
<div >
<div >
<input value="" type="hidden"><span id="AsyncWrapperW371" aria-live="assertive" aria-relevant="all" aria-atomic="true">
<div id="nodeW371">
<div >
<div id="nodeW430">
<div >
<div id="nodeW431WizTab">
<div id="nodeW431">
<div >
<div id="nodeW469" role="group" aria-labelledby="nodeW469Title">
<div id="nodeW469Title"><span aria-hidden="true" role="presentation">*</span><span >Mandatory</span>
<h2>Title 2 for ABC</h2>
</div>
<div >
<div id="nodeW475" role="group" aria-labelledby="nodeW475Title">
<div>
<h3 >Title 3 For ABC</h3>
</div>
<div >
<div >This is test output to see when jaws will stuff up and not read all the message that it is supposed too how long can it go before it jumps to the next prompt. This is the next sentence
It loses it's place in these words right here, this will not get read</div>
<div id="nodeW477">
<div ><label for="nodeW477_data" id="nodeW477_label"><span aria-hidden="true" role="presentation">*</span><span >Mandatory</span><span ></span></label></div>
<div ><select tabindex="117" id="nodeW477_data" name="nodeW477_data"
>
<option selected="selected" value="">Please Select...</option>
<option value="Y">First</option>
<option value="N">Second</option>
<option value="O">Third</option>
</select><a tabindex="118" id="nodeW477-a" title="Update the screen based on the selection made" onclick="dosomething"><span ></span><span>Update</span><span ></span></a></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</span>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
Old question but it just popped up for me since the title was updated. From the code snippet, the
<select>
has an associated<label>
element so that's all that should be read when focus moves to the combobox. The<label>
has a screen reader hidden asterisk followed by the text "Mandatory".(Note that NVDA is not currently honoring the "hidden" asterisk and says "star mandatory" instead of just "mandatory". Both JAWS and Voiceover (correctly) say "mandatory".)
For the long text to be read, you can disassociate the
<label>
from the select by removing thefor
attribute from the<label>
and then add anaria-labelledby
to the<select>
itself. Your long text is in a<div>
that does not have an ID so you'd need to add an ID to it and then specify that ID in thearia-labelledby
of the<select>
.When I do this, I hear all the text. Nothing is buffered or clipped. But then I'm using JAWS 2018 (current version) which is a bit more advanced than JAWS 13 that was available at the time.