You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带Aria属性的搜索框Placeholder不显示及清空后NVDA播报异常问题

修复方案

1. 搜索框Placeholder搭配Aria属性不生效问题

原因:你的input输入框上配置了aria-label属性,该属性的无障碍播报优先级高于原生placeholder,会导致NVDA等屏幕阅读器优先读取aria-label的内容,不会识别placeholder,且当前aria-label的内容存在拼写错误。
修复方案:

  • 若无需自定义无障碍标签,直接删除input上冗余的aria-label属性即可,原生placeholder本身可被主流屏幕阅读器正常识别。
  • 若需要保留自定义标签,将aria-label的内容修改为与placeholder一致即可,同时不会影响placeholder的视觉展示。

2. 清空输入后屏幕阅读器播报总人数问题

原因:你的aria-live实时播报区域没有和搜索状态绑定,当输入清空后,filterPeople会返回全量人员列表,此时播报区域仍会更新计数并触发朗读。
修复方案:
修改aria-live区域的属性绑定逻辑,仅当搜索词不为空时才输出结果计数,搜索词为空时返回空内容即可,同时删除div上无效的alt属性(alt仅适用于img标签,普通div配置无意义):

<div class="sr-only" aria-atomic="true" aria-live="assertive">
    <span class="sr-only" v-bind:aria-label="search ? 'Showing '+filterPeople.length + ' results.' : ''"></span>
</div> 

额外代码问题修正

你当前的搜索结果列表代码存在变量引用错误:循环变量为person,但内部属性错误引用了不存在的city,点击事件也错误调用了addCity方法,需修正为对应变量和方法,否则列表无法正常渲染:

<div v-show="search != ''" class="wc-select-city">
    <div v-for="(person, index) in filterPeople" :key="person.Id + '-' + index" class="wc-result-people" tabindex="0" :value="person.Id" @click.stop.prevent="addPerson(person.Id)" @keyup.enter.stop.prevent="addPerson(person.Id)">
        <p :title="person.PersonName">
            {{ person.PersonName }}
        </p>
    </div>
</div>

内容的提问来源于stack exchange,提问作者Pony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:24:03