电话号码通常都是数字,忽略括号、破折号、加号等符号,因此电话号码的输入字段通常是数字。
当屏幕阅读器遇到数字输入字段时,会将该值作为整数读取。例如,如果我有三个用于美国电话号码的输入字段,第一个是区号(3位数字),然后是交换机号码(3位数字),最后是线路号码(4位数字),如果这些字段的值分别是123、456、7890,我们通常说出那个号码的方式是“一 二 三”,“四 五 六”,“七 八 九 零”。
但是,当屏幕阅读器遇到这些字段时,它会说“一百二十三”,“四百五十六”,“七千八百九十”。
我认为屏幕阅读器用户习惯于将电话号码视为大数值(至少我与之交谈过的人都是这样期望的),但这并不意味着我们不能做得更好。如果我要求其中一个人给出他们的电话号码,他们不会使用大数值,而是使用单个数字。
我尝试了各种<input>类型,并查看了所有角色、状态和属性,但没有看到任何内置的东西可以强制数字被读取。
我所能想到的唯一办法是通过使用可视隐藏的<span>,其中包含单独的数字,<span id='foo'>1 2 3</span>,然后使用<input aria-labelledby='foo'>。
有更好的方法吗?