我有以下div标签:
<div id="ErrorMsg"
role="alert"
class="alert alert-error"
style="display:none;">
Email or password incorrect
</div>
当我触发这个jQuery时,它变得可见,但不会被宣布为警报。
$('#ErrorMsg').show();
在我执行无效检查后,这会添加到页面中:
ScriptManager.RegisterClientScriptBlock(
this,
GetType(),
"Error",
"$('#ErrorMsg').show();",
true);
我正在使用NVDA进行测试,该页面是一个带有更新面板的aspx页面。我尝试删除面板,但这似乎不是问题。一切正常,只是没有警报通知。正在检查的文本框具有设置的标签,并指向div标签id。
答案 0 :(得分:1)
我想说问题是两件事之一。
还有其他DOM事件正在发生,并在读取之前中断警报。对此的一个解决方案是使用aria-live =“粗鲁”,尽管这对NDVA没有帮助,因为这仍然是非中断的。
您可以使用$('#ErrorMsg')。focus()将焦点放在元素上。您还需要在元素上放置tabindex =“0”。 e.g。
<div id="ErrorMsg"
role="alert"
tabindex="0"
class="alert alert-error"
style="display:block;">
Email or password incorrect
</div>
另一个问题可能是ScriptManager.RegisterClientScriptBlock刷新页面(我不是.NET开发人员所以我可能错了)。既然如此,上述解决方案也应该有效。
然而,如果这种方法有效,则屏幕阅读器用户可能会“迷失”它们在页面上的位置。因此,您可能需要将ErrorMsg元素更改为链接到电子邮件或密码输入框的元素。
希望这有帮助。