gpt4 book ai didi

jquery - 预输入和屏幕阅读器

转载 作者:行者123 更新时间:2023-12-03 22:15:54 25 4
gpt4 key购买 nike

我正在使用 Typeahead/Bloodhound 从数据库内容生成列表。我希望屏幕阅读器在突出显示时阅读猎犬建议。我向元素添加了一些咏叹调角色,试图从屏幕阅读器中读取内容。但是,当突出显示时,屏幕阅读器将保持沉默。如果我将焦点添加到该元素,那么blodhound模式窗口将关闭,这将不起作用。

到目前为止我所拥有的:

 var myTypeahead = $('.supersearch').typeahead({
highlight: true,
autoselect: true
},
{
name: 'search-content',
displayKey: 'title',
source: content.ttAdapter(),
templates:{
header: '<h3 class="typeaheadTitle">Filtering Content...</h3>',
empty: [
'<div class="noResults">',
'No Results',
'</div>'
].join('\n'),
suggestion: Handlebars.compile('<div class="searchListItem"><a href="{{link}}" class="searchLink" aria-label="{{title}}">{{title}}</a></div>')
}
});


myTypeahead.on('typeahead:cursorchanged', function($e, datum){
$(this).html(datum["value"]);
var focused = $( document.activeElement )
var submenuHighlight = focused.parent().find('.tt-cursor .searchListItem a');
console.log(submenuHighlight.text());
});

// Add aria dialog role
$('.tt-dataset-search-content').attr({
'role': 'dialog',
'aria-live': 'assertive',
'aria-relevant':'additions'
});

它将 aria 标签角色添加到输出列表和容器中,但尝试通知读者此列表动态更改失败。我也在听cursorchanged,所以我可以隔离我需要发声的元素(console.log 验证了这一点),但我不知道如何告诉读者使用 tt-cursor 类读取当前项目。

这是 HTML 输出:

 <div class="tt-dataset-search-content" role="dialog" aria-live="rude" aria-relevant="additions">
<h3 class="typeaheadTitle">Filtering Content...</h3>
<span class="tt-suggestions" style="display: block;">
<div class="tt-suggestion tt-cursor">
<div class="searchListItem" style="white-space: normal;">
<a href="/about" class="searchLink" aria-label="About"><strong class="tt-highlight">A</strong>bout</a>
</div>
</div>
<div class="tt-suggestion">
<div class="searchListItem" style="white-space: normal;">
<a href="Things" class="searchLink" aria-label="Things">THings</a>
</div>
</div>
</div>

当读者关注输入元素时,所有读者都会告诉我它是一个搜索字段。

更新

添加了一个 fiddle :http://jsfiddle.net/m9a4sg52/

尽管我不认为这是一对一的设置,因为预输入结果是在 DOM 加载后生成的。

最佳答案

为突出显示的元素提供标题可能会有所帮助。

myTypeahead.on('typeahead:cursorchanged', function($e, datum) {

console.log($e);
$(".tt-cursor").attr("title", datum);

/*
$(this).html(datum["value"]);
var focused = $( document.activeElement )
var submenuHighlight = focused.parent().find('.tt-cursor .searchListItem a');
console.log(submenuHighlight.text());
*/
});

或者为什么不添加自定义模板然后将标题属性赋予this elements之一支持标题属性。

关于jquery - 预输入和屏幕阅读器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30607052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com