我们有一些可用于用户输入的自定义组件(CustomSelect
、SegmentedControl
、CustomCheckbox
等)。
在某些情况下,这些代码内部使用语义html标记(如radiogroup
或select
),但在某些情况下,标记完全使用div
和span
元素编写,而可访问性则使用aria属性提供。对于这样的实现,是否有方法将label
元素关联到它们,使它们的行为像本机表单输入wrt标签行为,或者更好的是,是否有一种方法将它们作为本机表单输入处理?
脑海中浮现的东西:
有什么现有的模式吗?
发布于 2022-07-23 13:42:42
你需要做三件事:
aria-labelledby
以编程方式将标签与元素关联。请注意,您可以使用真正的<label>
元素,但它主要用于更易读的代码,因此很容易发现与元素关联的标签。您很可能(*) 不能使用<label>
元素的for
属性,因为指定的ID必须是"可标记元素",定义为:
(*)如果您有一个具有属性为true的自定义元素,则可以使用form-associated
属性。<label>
可以用于"表单关联自定义元素“
见https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-face-example。
我以前还没有创建自定义表单元素,但是文档听起来像是一个真正的<label for="ID">
,在这种情况下,您不需要aria-labelledby
或javascript。
https://stackoverflow.com/questions/73083946
复制相似问题