如果我不提交数据,我应该使用 FORM 元素吗?正确的 (X)HTML 标记

Should I use a FORM element if I'm not submitting data? Proper (X)HTML markup

提问人:cwd 提问时间:6/9/2011 最后编辑:Steven R. Loomiscwd 更新时间:6/10/2011 访问量:418

问:

在我的 Web 应用程序中,我有一个用户配置文件页面。该页面上包含以下元素:

Connect with Twitter
Connect with Facebook
Timezone Select
Language Select

前两件事会弹出一个 OAuth 窗口,允许用户进行连接。最后两件事是用 AJAX 保存的。

当我做页面时,我应该如何做 HTML?我认为所有项目都应该是“ul”元素中的 <li> 元素,而不是每个元素的单独“div”或“p”元素。

但是我应该使用什么容器元素呢?我正在争论只使用“div”和使用没有动作的“form”。

我正在收集一些数据,这是“表单”元素的参数,但实际上不会使用表单 - 不会有提交按钮。所以这就是反对它的论点。

这样做的最佳实践是什么?如果您能提供一些支持文档的链接,那也会有所帮助。

谢谢!

HTML CSS 表单 XHTML 辅助功能

评论


答:

5赞 Michael Robinson 6/9/2011 #1

最佳做法是使网站在没有 Javascript 的情况下工作,然后逐步添加 Javascript / AJAX 作为增强功能。

渐进式增强 (Wikipedia)

渐进式增强是一种策略 对于强调 可访问性、语义 HTML 标记、 以及外部样式表和脚本 技术。渐进式增强 在分层中使用 Web 技术 让每个人都能接触到的时尚 的基本内容和功能 网页,使用任何浏览器或 互联网连接,同时 为那些人提供更好的带宽, 更高级的浏览器软件或更多 体验增强版 页。

所以是的,你应该使用 .**form

** 如果您关心渐进式增强。正如此答案的评论中所讨论的,就您而言,您不/不能关心的地方,这并不重要。使用您最喜欢的任何元素。

评论

0赞 cwd 6/9/2011
是的,我知道渐进式增强,我不是在问这个。某些 Web 应用程序需要 Javascript,例如 Facebook。让我们假设这是这种类型的 Web 应用程序。除了渐进式增强之外,您还有什么理由支持不用于提交数据的 FORM?
1赞 joelhardi 6/9/2011
渐进式增强仍然适用于时区和语言选择器,因此我们的想法是让它们类似于表单中的输入选择,以便没有 Javascript 的用户仍然可以使用这些控件并提交表单。如果你坚持没有这些非 Javascript 版本,那么就没有理由使用表单元素。在这种情况下,不需要特别需要任何容器元素,但如果你想使用 ,那很好。div
0赞 cwd 6/9/2011
谢谢。澄清一下,Web 应用程序将需要 Javascript 来实现所有功能,而不仅仅是连接到 Facebook。Facebook 只是一个主流 Web 应用程序的例子,如果没有 Javascript,它根本无法运行。最后,我的问题正是你的最后一句话:既然不需要特定的容器元素,我应该使用哪一个?我认为使用FORM元素来收集信息在语义上仍然比DIV(除法)更正确。
0赞 Michael Robinson 6/9/2011
我会说使用表单,但如果你不打算在没有 JS 的情况下让网站工作,那么这真的无关紧要。
0赞 joelhardi 6/9/2011
很公平。我反对使用表单,除非你真的要有一个提交的表单。对我来说,这在语义上和(我猜)在视觉上不是一个表单,所以它不应该使用表单标签。如果用户在表单子元素具有焦点时或在其他浏览器中按回车键,也可能会产生副作用。这些 clicky 元素中的每一个都是独立工作的,但如果要在语义上将它们分组为页面的一部分,请使用 div。归根结底,这是一个微妙的问题,没有绝对的问题。
0赞 jimhomme 6/9/2011 #2

纯粹从可访问性的角度来看,尽管您知道要如何实现这一点,但听起来好像语言选择和时区选择功能要求客户从列表中进行选择。对于这些,我设想了两种小的形式。每个表单都包含一个使用 for 属性的标签标签。这些表单还将具有列表输入标记。最后,他们 会有一个提交按钮。您将为输入标签提供名称属性。您可以将 name 属性的值粘贴到标签标签的 for 属性字符串中。

我设想其他两个项目可能是小形式,只有触发功能的按钮。它们也可以是超链接,但辅助功能方面的最佳实践可能规定它们不是超链接,以防万一有人使用不支持脚本的浏览器,或者出于任何原因,有人关闭了脚本。