代码之家  ›  专栏  ›  技术社区  ›  wscourge Kiran Balakrishnan

可访问的隐藏文件输入

  •  1
  • wscourge Kiran Balakrishnan  · 技术社区  · 7 年前

    <input type='file' /> 并将其替换为可访问的输入本身。

    问题是: type='file' 访问密钥的密钥?

    我的方法:

    我基本上已经告诉浏览器忘记

    input[type=file] {
        display: none;
        visibility: hidden;
        opacity: 0;
        height: 0;
        width: 0;
        position: absolute;
        top: -9999px;
    }
    

    准备更换:

    <input type='file' />
    <label for="file">Upload your file</label>
    <input type='text' id='file' />
    

    使用一些漂亮的CSS修复了操作系统的样式,并添加了JS(jQuery)代码来处理文件浏览器显示:

    $("#file").on("focus", function(ev) {
        $(this).siblings("[type='file']").first().focus();
    });
    

    类型=“文件” tabindex="-1" ,那么需要可访问性的人在短时间内连续两次打开文件浏览器时不会感到困惑?我应该添加一个 id='file-label' <label> aria-describbedby='file-label' 类型=“文件” ? 还是我应该放弃一切,使用肮脏的标准 类型=“文件” ?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Adam    7 年前

    There's no corresponding role in ARIA 对于 input[file] 标签您正在使用五种不同的方法来隐藏 元素( display:none , visibility: hidden opacity:0 width=0;height=0 tabindex=-1 显示:无 元素无效。。。

    输入[文件] 用一个 button 因为这个按钮会触发点击隐藏的

    这个 input[text] 会在屏幕阅读器上发布一条奇怪的公告。

    当然,修改 在完成选择后指定选定文件的文本。