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

.NET MVC项目中NVDA/JAWS读自动补全下拉框异常问题求助

解决NVDA/JAWS屏幕阅读器在jQuery Autocomplete上的异常读取问题

1. 移除干扰性的无障碍属性

首先删除input标签上的aria-hidden="true",这个属性会破坏屏幕阅读器对输入框和下拉选项的正常识别逻辑,是导致“首字母+完整值”重复读取的关键原因。修改后的CSHTML代码:

<input id="client" type="text" class="form-control" data-html="true" placeholder="Enter @Model.ClientTitle">

2. 优化Autocomplete配置,修复读取逻辑

通过调整jQuery UI Autocomplete的配置和自定义渲染逻辑,消除重复读取和字符拆分问题:

$('#client').autocomplete({
    source: function (request, response) {
        response($.map(clients, function (item, key) {
            return {
                label: `${item.Name} (${item.ClientId})`,
                value: item.Name,
                clientId: item.ClientId
            }
        }));
    },
    select: function (event, ui) {
        event.preventDefault();
        if (!ui.item.value) {
            $('#client').val(null);
            return false;
        }
        $('#client').val(`${ui.item.label}`);
    },
    response: function (event, ui) {
        if (!ui.content.length) {
            ui.content.push({ 
                value: "", 
                label: "未找到匹配结果" 
            });
        }
    },
    minLength: 3,
    delay: 500,
    open: function() {
        // 给下拉列表设置明确的无障碍标签,确保阅读器正确识别
        $(this).autocomplete("widget")
            .attr("aria-label", "客户选项列表")
            .find("li").each(function() {
                // 强制每个选项以完整文本作为读取内容,避免拆分首字母
                $(this).attr("aria-label", $(this).text());
            });
    },
    // 自定义下拉项渲染,绕过默认的字符拆分逻辑
    _renderItem: function(ul, item) {
        return $("<li>")
            .append(`<div>${item.label}</div>`)
            .appendTo(ul);
    }
});

3. 额外优化建议

  • 给输入框添加明确的无障碍标签,帮助阅读器识别输入用途:
<input id="client" type="text" class="form-control" data-html="true" 
       placeholder="Enter @Model.ClientTitle" 
       aria-label="请输入客户名称或ID">
  • 使用最新版本的jQuery UI、NVDA和JAWS,旧版本可能存在无障碍兼容性问题
  • 确保页面使用HTML5文档声明(<!DOCTYPE html>),这是无障碍支持的基础

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:15:20