javascript - 通过的 react 组件在表单标签的可访问性单元测试中失败了吗?

标签 javascript reactjs ecmascript-6 accessibility babeljs

我的可重用组件看起来像这样的 `jsx

 return <div>
  <label className="label" htmlFor={name}>
  </label>
  <textarea
    name={name}
    aria-label={name}
    id={id || name}
    onChange={this.onChange}
    value={value}
  />
</div>;

并且它像下面这样被拉入另一个组件中

    <TxtareaComp
          name="Lorem"
          value={this.props.lorem}
          id="lorem-ipsum"
          onChange={this.props.lorem}
          />

渲染后看起来像这样

<div><label class="label"  for="Lorem">Lorem</label>
<textarea name="lorem" " id="Lorem">
 </textarea>
  </div>

工作得很好,但问题是它对 accessibility

的测试失败了

它说我缺少标签

   Sniffybara::PageNotAccessibleError:
   Form elements must have labels

   Elements:
   <TxtareaComp...
   ["#lorem-ipsum"]

虽然有一个标签,但我如何绕过这个问题来解决这个问题......同时使用现有的组件?

最佳答案

for 需要 id,而不是 input 的名称。因此,如果您通过 id={id || 设置 id输入上的name},需要同样设置htmlFor:htmlFor={id ||名称在标签上。

当然,您还有其他选择:将input inside label。那么你不需要 forinput 上的 id(为此;你可能需要 id为别的)。但能否做到这一点取决于您的造型。

关于javascript - 通过的 react 组件在表单标签的可访问性单元测试中失败了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45688093/

相关文章:

javascript - 为什么输入的数字不是 "move"的颜色?

javascript - Legend.labels.template 实现

javascript - 未生成 Webpack 捆绑文件

JavaScript 将带有数字字符串的键转换为数字......但 Object.keys() 不会

javascript - 干净的箭头函数 - 对数组中的多个元素调用生成器

javascript - "document.write"的字体属性不起作用

javascript - 当表格响应时, Bootstrap 可过滤弹出窗口在移动设备中消失

reactjs - 无法在 redux-form 字段中输入

javascript - 如何根据express/mssql中间件反馈有条件地渲染页面

javascript - 使用 react.js 从嵌套子项中获取表单值