如果输入字段只是一个搜索功能,我是否需要将输入字段包装在表单中?



我刚刚注意到,即使是谷歌也不使用表单来包装他们的输入字段。我认为这在可访问性方面很糟糕,因为屏幕读者不知道它是什么?

从纯屏幕阅读器的角度来看,拥有<form>是将一组控件组合在一起的一种方式,如果为表单指定标签(如<form aria-label="contact info">(,效果最佳。

如果您有一个简单的搜索字段,并且可能有一个相关的搜索按钮,那么不一定需要<form>。但是,您应该使用role="search"将元素嵌套在搜索地标中。

<div role="search">
<input aria-label="search term">
<button aria-label="search">
<i class="magnifier"></i>
</button>
</div>

看起来文字"search"在代码片段中经常出现,但"search(搜索("必须真正出现的唯一时间是role属性。

输入的aria-label可以是您想要的任何字符串。这是当焦点移动到场上时,屏幕阅读器将读取的内容。如果您的<input>有一个<label>,则不需要aria-label

<button>只有一个放大镜图标,没有文本,因此屏幕阅读器也需要aria-label。如果您的图标是<img>而不是<i>,则可以在img的alt属性中指定按钮的标签,在这种情况下,<button>不需要aria-label

<div role="search">
<label for="findit">search term</label>
<input id="findit">
<button>
<img src="magnifier.jpg" alt="search">
</button>
</div>

所以简单的答案是,"不",你不必把你的搜索放在<form>中。但强烈建议使用role="search"将其封装在"搜索"里程碑中。

您不一定需要,但您应该始终使用表单标记从表单元素提交任何类型的数据,谷歌也会这样做(如果您在DOM中遍历,您会发现(。

不过,您可以使用AJAX提交数据,但不能在JavaScript未运行时提交。

最新更新