JAWS 不读取占位符

JAWS doesn't read placeholder

我正在使用 JAWS 来测试代码。 JAWS 将以下日期读作 "Move In Date star dd/mm/i-edit"。

如何让 JAWS 将其读取为 "Move In Date star dd/mm/yyyy"。 JAWS 不读取 "yyyy",而是读取 "i edit".

<input type="text" aria-label="Move In Date * dd/mm/yyyy" id="startDate" placeholder="dd/mm/yyyy">

首先,根据 "Accessible Name and Description Computation 1.1" spec,应该阅读 aria-label 而不是 placeholder,但有些屏幕阅读器会同时阅读标签和占位符。其他人只会阅读标签。

规范的第 2C 步说使用 aria-label 然后处理然后停止。 (规范是一个很大的 if/else 语句。)第 2D 步是 placeholder * 可能 * 被使用的地方。这就是使用 "native markup...text alternative" 的地方。 placeholder 是否应该被视为替代文本是值得商榷的,但是,如果满足步骤 2C,则永远不会到达步骤 2D。

JAWS 可能会说 "my" 而不是 "i",但它仍然不正确。听到后按Ins+Space然后H调出JAWS的语音历史window。它应该显示所阅读的确切文本,这应该是您的 aria-label.

您可以尝试两件事:

  1. 调整您在 JAWS 中的 "punctuation" 冗长设置。默认值为 "most"。我不记得 "most" 是否会导致读取“/”。如果您听不到 "slash",可以尝试将其更改为 "all",看看是否将 "mm" 与 "yyyy".
  2. 分开
  3. aria-label 中使用大写字母指定日期。有时,如果单词不是可发音的单词,JAWS 会在单词全部大写时拼出字母。

<input type="text" aria-label="Move In Date * DD/MM/YYYY" id="startDate" placeholder="dd/mm/yyyy">

在日期掩码中使用大写字母,例如年年年年。 JAWS 会将它们作为单独的字母来阅读。

您无需执行任何其他操作,但我建议您在输入中使用常规标签元素构造,而不是 aria-label。