如何使maxlength属性可访问?

时间:2014-06-04 11:48:07

标签: html forms accessibility

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

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

有没有办法让这个可以访问?

此致 Zeeshan

5 个答案:

答案 0 :(得分:4)

三种方法,不相互排斥:

  1. 包含有关元素前最大字符数的声明。
  2. 在离开元素时对字符数实施JavaScript驱动检查。
  3. 实现由元素上的任何输入事件触发的JavaScript驱动的检查,并检查动态中的字符数。
  4. 方法1最简单,但如果我们期望在绝大多数情况下,长度不是问题,则可能会令人不安。方法3比方法2需要更多的编程工作,但提供了更好的可访问性:用户在尝试超出限制时立即收到消息。

    正如@Quentin评论,这真的应该由JAWS处理。 maxlength的{​​{1}}属性一直是HTML格式,只要它有HTML 2.0(1995)中的元素,所以没有理由没有实现它。我无法检查JAWS是否真的支持它,所以我写了我的答案,假设它没有。

答案 1 :(得分:3)

当达到限制时,您可以使用JS检测到该限制,然后将其宣布给辅助技术,例如屏幕阅读器通过在<input/>

之后插入以下内容
<p class="visually-hidden" aria-live="assertive" role="alert">Limit reached. You can only use 20 characters in this field.</p>

注意:请记住,如果/在限制范围内,请将其删除。

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

让屏幕阅读器用户了解您可以将<span class=visually-hidden>Max 20 characters</span>置于<label>内的限制  元件。 (同样在这里,也许所有用户都可以从显示该信息中受益..)

答案 2 :(得分:1)

你可以尝试一下,mws-stat是你的输入字段类名

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

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

然后

$('.mw').keyup(function(){
console.log($(this).val().length);
});

答案 3 :(得分:1)

使用文本字段的title属性来传达最大长度。对于使用JAWS的用户的政府项目,它非常有用。我相信NVDA也使用title属性来传达信息。此外,您可以使用JavaScript来发出声音&#34; ding&#34;通知用户该字段已达到最大限制。

答案 4 :(得分:0)

你可以做这样的事情

<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>

这是小提琴http://jsfiddle.net/EVrqP/1/