Html 如何使maxlength属性可访问?

Html 如何使maxlength属性可访问?,html,forms,accessibility,Html,Forms,Accessibility,我在几个输入字段中有一个表单。对于其中一个输入字段,我使用了长度验证maxlength=“20” 这里的问题是,JAWS用户不知道输入字段已经达到最大长度,因为JAWS继续读取他们在键盘上按下的键 有没有一种方法可以让这一切变得容易 问候,, Zeeshan你可以试试,mws stat是你的输入字段类名 <input type="text" class='mw' maxlength='20'/> var a=$('.mw').attr('maxlength'); console.l

我在几个输入字段中有一个表单。对于其中一个输入字段,我使用了长度验证
maxlength=“20”

这里的问题是,JAWS用户不知道输入字段已经达到最大长度,因为JAWS继续读取他们在键盘上按下的键

有没有一种方法可以让这一切变得容易

问候,,
Zeeshan

你可以试试,mws stat是你的输入字段类名

<input type="text" class='mw' maxlength='20'/>

var a=$('.mw').attr('maxlength');
console.log(a);

你可以这样做

<script>
  function show(){

var x=document.getElementById("text1").value;
var y=x.length;
document.getElementById("p1").innerHTML="Characters left" +(20-y);

                 }  
</script>

<input type="text" id="text1" maxlength="20" onkeydown="show()">
<p id="p1"></p>

函数show(){
var x=document.getElementById(“text1”).value;
var y=x.长度;
document.getElementById(“p1”).innerHTML=“Characters left”+(20-y);
}  


以下是三种并非相互排斥的方法:

  • 在元素前面包含一条关于最大字符数的语句
  • 在离开元素时实现JavaScript驱动的字符数检查
  • 实现JavaScript驱动的检查,该检查由元素上的任何输入事件触发,并动态检查字符数
  • 方法1是最简单的,但是如果我们认为在绝大多数情况下,长度不是问题,那么它可能太令人不安了。方法3比方法2需要更多的编程工作,但提供了更好的可访问性:用户一旦试图超过限制就会收到消息


    正如@Quentin所评论的,这确实应该由JAWS来处理。
    input
    maxlength
    属性从HTML2.0(1995)开始就一直在HTML中,因此没有理由不实现它。我无法检查JAWS是否确实支持它,因此我在假设它不支持的情况下编写了我的答案。

    使用文本字段的title属性来表示最大长度。它在政府项目中对我们非常有效,用户使用JAWS。我相信NVDA也使用title属性来传达信息。此外,您可以使用JavaScript发出声音“叮当”以通知用户字段已达到最大限制

    当达到限制时,您可以使用
    JS
    检测,然后通过在
    后插入以下内容向辅助技术(如屏幕阅读器)宣布

    已达到限制。此字段中只能使用20个字符

    注意:如果再次超出限制,请记住将其移除

    您可以使用CSS在屏幕外隐藏
    。视觉隐藏
    。。或者,这些信息实际上对每个人都有用,因此如果符合您的设计,您可以省略
    .visually hidden

    为了让屏幕阅读器用户知道限制,您可以在

    元素。(这里也是一样,也许所有用户都可以从这些信息的可见性中获益。)

    您也可以尝试询问您是否通过HTML标准方法公开了这些信息。如果JAWS没有向用户公开这些信息,那么要么是JAWS中的bug,要么是浏览器没有向JAWS公开这些信息。我会在freedomscientific.Cross-post中提出一个错误:如果屏幕阅读器用户关注输入并正在键入,则不会宣布。JAWS仍然不支持
    maxlength
    属性。这是迄今为止我找到的最佳解决方案,应该是公认的答案。其他答案指出,应该在
    标签中公布最大字符数。这可能非常烦人,因为它将标签的平均长度增加了一倍,并添加了95%的时间都不需要的信息。此解决方案仅在需要时提供信息。请注意,
    aria live=assertive
    是多余的,因为
    role=alert
    已经暗示了它。资料来源:
    <script>
      function show(){
    
    var x=document.getElementById("text1").value;
    var y=x.length;
    document.getElementById("p1").innerHTML="Characters left" +(20-y);
    
                     }  
    </script>
    
    <input type="text" id="text1" maxlength="20" onkeydown="show()">
    <p id="p1"></p>
    
    <p class="visually-hidden" aria-live="assertive" role="alert">Limit reached. You can only use 20 characters in this field.</p>