【问题标题】:aria-labelledby attribute and asp.net validatorsaria-labelledby 属性和 asp.net 验证器
【发布时间】:2013-05-10 17:25:12
【问题描述】:

我正在使用 .net 4.0 和股票验证器在 VS2010 中创建一个 html5 网站。为了使验证器可访问,我在关联的文本框中添加了一个 aria-labelledby 并在 aria-labelledby 值中设置了验证器 ID。验证器的 id 模式设置为静态。验证标签被 display:none css 样式隐藏,触发时被移除。

似乎工作正常,因为 NVDA 看到错误消息并将其关联到正确的文本框。但是当我去验证它时,我收到以下错误:

aria-labelledby 属性必须指向同一文档中的元素

那么,问题是...... aria-labelledby 可以引用不可见的控件吗?

【问题讨论】:

  • display: hidden?我想您的意思是visibility: hiddendisplay: none(两者都对屏幕阅读器隐藏内容,因此它可能是其中的任何一个)。通过placing it off screen(负文本缩进或左位移的巨大值与位置:相对)在视觉上隐藏这个“验证器”是否有意义?
  • 哎呀...这很尴尬...现在显示:无。至于隐藏它,该错误也用于有视力的用户。其实那是原来的观众。我正在尝试调整验证器,以便屏幕阅读器也可以访问。

标签: asp.net validation accessibility


【解决方案1】:

快速回答是肯定的……经过更多测试后,我发现 NVDA 会读取隐藏的 span 标签,即验证器错误文本。

我遇到的问题是让 NVDA 接收到所需的验证器的错误消息。不幸的是,在 IsValid 函数被触发后会显示错误......在回发后触发事件。 NVDA 会看到带有错误消息的页面,但不知道它们是新的。

为了解决这个问题,我在 blur 事件上触发了验证器,如下所示。

我向正在验证的控件添加了一个模糊事件,并调用了附加到该控件的验证器

onblur="validateControl(RequiredFieldValidatorID)"

调用的函数使用 ValidatorValidate 函数。

function validateControl(n) {
 ValidatorValidate(n);
}

这会使所需的验证器在模糊时触发。仍然需要重新关注有错误的控件,但我想我需要抓住选项卡并重定向......正在进行中。

【讨论】:

    猜你喜欢
    • 2013-11-06
    • 2022-11-09
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 2016-11-01
    相关资源
    最近更新 更多