我可以很容易地使用任何输入类型,而不必使用form标签。将它包裹在输入框周围似乎几乎是多余的。
此外,如果我使用AJAX调用服务器端页面,我可以简单地使用jQuery来实现。唯一的例外是我注意到必须将上传脚本包裹在form标签中,原因不明。
那么为什么在像文本输入这样简单的事情上,表单仍然被广泛使用呢?这似乎是一种非常陈旧和不必要的做法。
我只是看不到它的好处或需要。也许我漏掉了什么。
你缺少的是对语义标记和DOM的理解。
实际上,你几乎可以使用任何HTML5标记,大多数浏览器都会解析它。我上次检查时,WebKit / Blink甚至允许在<input>
元素中使用伪元素(pseudo-elements),这明显违反了规范,而Gecko则不太支持。然而,随意使用你的标记无疑会使其在语义方面失效。
为什么我们要将<input>
元素放在<form>
元素中?与将<li>
标签放在<ul>
和<ol>
元素中的原因相同-那是它们所属的位置。这是语义上正确的,并有助于定义标记。当标记具有意义而不仅仅是结构时,解析器、屏幕阅读器和各种软件可以更好地理解您的标记。
<form>
元素的答案。这没关系,就像我说的,你可以随意使用任何你喜欢的标记语言,但是我已经解释了开发人员使用表单的主要原因。请注意,我的翻译尽可能保持原意,同时使语言更加通俗易懂。 - Oka<form>
之外有一个<input>
不是无效标记,但可能语义不佳。如果有一种方法可以通过适当的“提交”事件提交数据而不使用 AJAX,则最好使用表单。同样,元素需要一个容器,<form>
元素默认为块级元素,因此它们的行为就像<div>
。 - Oka如果您想在不使用 AJAX 的情况下提交表单(在开发早期可能有用),则仍然需要使用表单标签。但即使可以使用 JavaScript 提交数据而不使用表单标签,仍然有一些好处:
.serialize()
这样的东西只能在表单元素上工作。 - EJTH我遇到了这样一种情况,一个网页上有3个表单,每个表单都有独立的电子邮件字段(具有不同的ID)。起初,我将它们分别包装在不同的<div>
标签中。直到我将它们全部包装在<form>
标签中,iOS Safari的自动填充功能才正常工作。其中一个表单只有一个输入字段,用于订阅新闻通讯。当用户自动填充该输入字段时,网页会滚动到页面不同部分的下一个输入字段。
所以,感谢Oka的长篇文章。应尽可能使用具有语义含义的标签,因为您永远不知道哪个浏览器/设备无法很好地处理其他解决方案。