html - 您可以包装表单元素,例如
问题描述
我正在构建一个需要通过将不透明度的 css 属性添加为 0 来隐藏输入的组件。但是该组件的外观是一个按钮。隐藏输入的原因是出于选择目的。输入元素支持无线电类型。
问题1:在表单元素周围包裹一个按钮有什么意义?是否有任何可访问性问题?
问题2:而不是<button>
标签,使用也许更好<fieldset>
?
下面是组件的 Vue 模板?
<template>
<button :class="[$style['button-group-item'], sizeClass, classObject, variationClass]">
<label class='button-group-item__label'>
<input class="button-group-item__input" type="radio" :checked="checked" @change="$emit('change', $event.target.checked)"/>
<span>
{{ text }}
</span>
</label>
</button>
</template>
解决方案
您不应该将输入+标签包装在按钮中。结果会很奇怪:
- 另一个可聚焦元素(如按钮)内不应有任何可聚焦元素(如输入)。
- 按钮的可访问标签应该是什么?这可能会令人困惑。
- 当你点击按钮时会发生什么?这将不清楚,因为可访问的名称也将不清楚。
- 点击输入时是否应该激活按钮,因为输入在按钮内?答案取决于浏览器,无论它是什么,它都会混淆/不做预期的事情并让用户感到沮丧。
由于所有这些原因,我强烈建议您不要使用按钮。使用字段集要好得多,这是进入这里的正常方式。使用 CSS 使您的字段集看起来像一个按钮。
推荐阅读
- c++ - 有没有办法在非模板类中定义模板成员?
- c# - 无法为“ApplicationUser”创建 DbSet,因为此类型未包含在上下文模型中
- c# - 我可以使用 Windows CNG 存储解密 .gpg 文件吗?
- apache-spark - 如何转换数据集
非原始数据类型的列
- python - 为 django ModelChoiceField 设置默认值
- typescript - 打字稿:对结果类型的输入执行联合操作(向后计算)
- javascript - 在 html 页面上使用 javascript 动态添加剑道下拉菜单
- django - 在 virtualenv 中安装 Django:MySQL-python 错误
- postgresql - Postgres 订单列索引
- powerbi - 如何从关系的“多”方面过滤?