Вы правильно используете role="listbox"
и role="option"
, так что это хорошее начало. Я предполагаю, что у вас есть обработчик клавиатуры, чтобы пользователь мог перемещаться вверх / вниз по списку?
Будут ли эти два списка визуально отличаться друг от друга или они будут выглядеть как один список? Если они визуально различимы, я бы не рекомендовал бы, чтобы они выглядели как один список для пользователя программы чтения с экрана. Вам нужен одинаковый опыт для всех пользователей.
Однако, если вы визуально оформите два списка так, чтобы они выглядели как один список, , то вы можете поиграть с ARIA, чтобы они звучали как один список для пользователей программы чтения с экрана. Для этого попробуйте удалить второй role="listbox"
, чтобы последующие элементы role="option"
появились в первом списке. Но поскольку последующие параметры не являются дочерними элементами DOM вашего первого списка, вам также придется использовать aria-owns
и создать второй список role="presentation"
.
Обычно я люблю проверять вещи перед публикацией, но сейчас не могу этого сделать, но думаю, что-то вроде следующего: может работать:
<div id="suggestionContainer" style="display: block;">
<span class="is-vHidden" id="initInstr">‎6‎ results found with the word: "‎‎". Use up and down arrows
to review and enter to select.</span>
<div class="suggestionsGroup">
<div class="suggestionTitle">Title</div>
<ul class="suggestions" role="listbox" aria-owns="id1 id2"> <!-- add aria-owns -->
<li aria-selected="false" role="option">
<a href="link">Link Text</a>
</li>
<li aria-selected="false" role="option">
<a href="link">Link Text</a>
</li>
...
</ul>
</div>
<div class="suggestionsGroup">
<div class="suggestionTitle">Title</div>
<ul class="suggestions" role="presentation"> <!-- change role="listbox" to role="presentation" -->
<li aria-selected="false" role="option" id="id1"> <!-- add an ID -->
<a href="link">Link Text</a>
</li>
<li aria-selected="false" role="option" id="id2"> <!-- add an ID -->
<a href="link">Link Text</a>
</li>
...
</ul>
</div>
</div>